UNPKG

@grafana/runtime

Version:
212 lines (209 loc) • 7.12 kB
import { merge } from 'lodash'; import { systemDateFormats, getThemeById } from '@grafana/data'; class GrafanaBootConfig { constructor(options2) { this.publicDashboardsEnabled = true; this.snapshotEnabled = true; this.datasources = {}; this.panels = {}; this.apps = {}; this.auth = {}; this.minRefreshInterval = ""; this.appUrl = ""; this.appSubUrl = ""; this.namespace = "default"; this.windowTitlePrefix = ""; this.newPanelTitle = ""; this.externalUserMngLinkUrl = ""; this.externalUserMngLinkName = ""; this.externalUserMngInfo = ""; this.externalUserMngAnalytics = false; this.externalUserMngAnalyticsParams = ""; this.allowOrgCreate = false; this.feedbackLinksEnabled = true; this.disableLoginForm = false; this.defaultDatasource = ""; // UID this.angularSupportEnabled = false; this.authProxyEnabled = false; this.exploreEnabled = false; this.queryHistoryEnabled = false; this.helpEnabled = false; this.profileEnabled = false; this.newsFeedEnabled = true; this.ldapEnabled = false; this.jwtHeaderName = ""; this.jwtUrlLogin = false; this.sigV4AuthEnabled = false; this.azureAuthEnabled = false; this.secureSocksDSProxyEnabled = false; this.samlEnabled = false; this.samlName = ""; this.autoAssignOrg = true; this.verifyEmailEnabled = false; this.oauth = {}; this.rbacEnabled = true; this.disableUserSignUp = false; this.loginHint = ""; this.passwordHint = ""; this.loginError = undefined; this.viewersCanEdit = false; this.editorsCanAdmin = false; this.disableSanitizeHtml = false; this.trustedTypesDefaultPolicyEnabled = false; this.cspReportOnlyEnabled = false; this.liveEnabled = true; this.featureToggles = {}; this.anonymousEnabled = false; this.anonymousDeviceLimit = undefined; this.licenseInfo = {}; this.rendererAvailable = false; this.rendererVersion = ""; this.rendererDefaultImageWidth = 1e3; this.rendererDefaultImageHeight = 500; this.rendererDefaultImageScale = 1; this.secretsManagerPluginEnabled = false; this.supportBundlesEnabled = false; this.http2Enabled = false; this.grafanaJavascriptAgent = { enabled: false, customEndpoint: "", apiKey: "", allInstrumentationsEnabled: false, errorInstrumentalizationEnabled: true, consoleInstrumentalizationEnabled: false, webVitalsInstrumentalizationEnabled: false, tracingInstrumentalizationEnabled: false }; this.pluginCatalogURL = "https://grafana.com/grafana/plugins/"; this.pluginAdminEnabled = true; this.pluginAdminExternalManageEnabled = false; this.pluginCatalogHiddenPlugins = []; this.pluginCatalogManagedPlugins = []; this.pluginCatalogPreinstalledPlugins = []; this.pluginsCDNBaseURL = ""; this.expressionsEnabled = false; this.awsAllowedAuthProviders = []; this.awsAssumeRoleEnabled = false; this.azure = { managedIdentityEnabled: false, workloadIdentityEnabled: false, userIdentityEnabled: false, userIdentityFallbackCredentialsEnabled: false, azureEntraPasswordCredentialsEnabled: false }; this.caching = { enabled: false }; this.unifiedAlertingEnabled = false; this.unifiedAlerting = { minInterval: "", alertStateHistoryBackend: undefined, alertStateHistoryPrimary: undefined }; this.recordedQueries = { enabled: true }; this.featureHighlights = { enabled: false }; this.reporting = { enabled: true }; this.analytics = { enabled: true }; this.googleAnalytics4SendManualPageViews = false; this.analyticsConsoleReporting = false; this.dashboardPerformanceMetrics = []; this.sqlConnectionLimits = { maxOpenConns: 100, maxIdleConns: 100, connMaxLifetime: 14400 }; this.defaultDatasourceManageAlertsUiToggle = true; this.enableFrontendSandboxForPlugins = []; this.cloudMigrationFeedbackURL = ""; this.cloudMigrationPollIntervalMs = 2e3; this.exploreDefaultTimeOffset = "1h"; this.bootData = options2.bootData; const defaults = { datasources: {}, windowTitlePrefix: "Grafana - ", panels: {}, newPanelTitle: "Panel Title", playlist_timespan: "1m", unsaved_changes_warning: true, appUrl: "", appSubUrl: "", buildInfo: { version: "1.0", commit: "1", env: "production" }, viewersCanEdit: false, editorsCanAdmin: false, disableSanitizeHtml: false }; merge(this, defaults, options2); this.buildInfo = options2.buildInfo || defaults.buildInfo; if (this.dateFormats) { systemDateFormats.update(this.dateFormats); } overrideFeatureTogglesFromUrl(this); overrideFeatureTogglesFromLocalStorage(this); if (this.featureToggles.disableAngular) { this.angularSupportEnabled = false; } this.theme2 = getThemeById(this.bootData.user.theme); this.bootData.user.lightTheme = this.theme2.isLight; this.theme = this.theme2.v1; } } function overrideFeatureTogglesFromLocalStorage(config2) { const featureToggles = config2.featureToggles; const localStorageKey = "grafana.featureToggles"; const localStorageValue = window.localStorage.getItem(localStorageKey); if (localStorageValue) { const features = localStorageValue.split(","); for (const feature of features) { const [featureName, featureValue] = feature.split("="); const toggleState = featureValue === "true" || featureValue === "1"; featureToggles[featureName] = toggleState; console.log(`Setting feature toggle ${featureName} = ${toggleState} via localstorage`); } } } function overrideFeatureTogglesFromUrl(config2) { if (window.location.href.indexOf("__feature") === -1) { return; } const isDevelopment = config2.buildInfo.env === "development"; const safeRuntimeFeatureFlags = /* @__PURE__ */ new Set(["queryServiceFromUI", "dashboardSceneSolo"]); const params = new URLSearchParams(window.location.search); params.forEach((value, key) => { if (key.startsWith("__feature.")) { const featureToggles = config2.featureToggles; const featureName = key.substring(10); const toggleState = value === "true" || value === ""; if (toggleState !== featureToggles[key]) { if (isDevelopment || safeRuntimeFeatureFlags.has(featureName)) { featureToggles[featureName] = toggleState; console.log(`Setting feature toggle ${featureName} = ${toggleState} via url`); } else { console.log(`Unable to change feature toggle ${featureName} via url in production.`); } } } }); } const bootData = window.grafanaBootData || { settings: {}, user: {}, navTree: [] }; const options = bootData.settings; options.bootData = bootData; const config = new GrafanaBootConfig(options); export { GrafanaBootConfig, config }; //# sourceMappingURL=config.mjs.map