{"version":3,"file":"module.js","mappings":"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","sources":["webpack://cloud-home-app/webpack/runtime/load script","webpack://cloud-home-app/../node_modules/semver/classes/comparator.js","webpack://cloud-home-app/../node_modules/semver/classes/range.js","webpack://cloud-home-app/../node_modules/semver/classes/semver.js","webpack://cloud-home-app/../node_modules/semver/functions/clean.js","webpack://cloud-home-app/../node_modules/semver/functions/cmp.js","webpack://cloud-home-app/../node_modules/semver/functions/coerce.js","webpack://cloud-home-app/../node_modules/semver/functions/compare-build.js","webpack://cloud-home-app/../node_modules/semver/functions/compare-loose.js","webpack://cloud-home-app/../node_modules/semver/functions/compare.js","webpack://cloud-home-app/../node_modules/semver/functions/diff.js","webpack://cloud-home-app/../node_modules/semver/functions/eq.js","webpack://cloud-home-app/../node_modules/semver/functions/gt.js","webpack://cloud-home-app/../node_modules/semver/functions/gte.js","webpack://cloud-home-app/../node_modules/semver/functions/inc.js","webpack://cloud-home-app/../node_modules/semver/functions/lt.js","webpack://cloud-home-app/../node_modules/semver/functions/lte.js","webpack://cloud-home-app/../node_modules/semver/functions/major.js","webpack://cloud-home-app/../node_modules/semver/functions/minor.js","webpack://cloud-home-app/../node_modules/semver/functions/neq.js","webpack://cloud-home-app/../node_modules/semver/functions/parse.js","webpack://cloud-home-app/../node_modules/semver/functions/patch.js","webpack://cloud-home-app/../node_modules/semver/functions/prerelease.js","webpack://cloud-home-app/../node_modules/semver/functions/rcompare.js","webpack://cloud-home-app/../node_modules/semver/functions/rsort.js","webpack://cloud-home-app/../node_modules/semver/functions/satisfies.js","webpack://cloud-home-app/../node_modules/semver/functions/sort.js","webpack://cloud-home-app/../node_modules/semver/functions/valid.js","webpack://cloud-home-app/../node_modules/semver/index.js","webpack://cloud-home-app/../node_modules/semver/internal/constants.js","webpack://cloud-home-app/../node_modules/semver/internal/debug.js","webpack://cloud-home-app/../node_modules/semver/internal/identifiers.js","webpack://cloud-home-app/../node_modules/semver/internal/lrucache.js","webpack://cloud-home-app/../node_modules/semver/internal/parse-options.js","webpack://cloud-home-app/../node_modules/semver/internal/re.js","webpack://cloud-home-app/../node_modules/semver/ranges/gtr.js","webpack://cloud-home-app/../node_modules/semver/ranges/intersects.js","webpack://cloud-home-app/../node_modules/semver/ranges/ltr.js","webpack://cloud-home-app/../node_modules/semver/ranges/max-satisfying.js","webpack://cloud-home-app/../node_modules/semver/ranges/min-satisfying.js","webpack://cloud-home-app/../node_modules/semver/ranges/min-version.js","webpack://cloud-home-app/../node_modules/semver/ranges/outside.js","webpack://cloud-home-app/../node_modules/semver/ranges/simplify.js","webpack://cloud-home-app/../node_modules/semver/ranges/subset.js","webpack://cloud-home-app/../node_modules/semver/ranges/to-comparators.js","webpack://cloud-home-app/../node_modules/semver/ranges/valid.js","webpack://cloud-home-app/./feature/common/api/baseApi.ts","webpack://cloud-home-app/./feature/common/consts/appPaths.ts","webpack://cloud-home-app/./feature/common/types/CloudPlatform.enum.ts","webpack://cloud-home-app/./feature/common/types/Subscriptions.ts","webpack://cloud-home-app/./feature/common/types/Tiers.ts","webpack://cloud-home-app/./feature/common/types/User.ts","webpack://cloud-home-app/./feature/common/utils/UserUtils.ts","webpack://cloud-home-app/./feature/common/utils/featureToggles.ts","webpack://cloud-home-app/./feature/common/utils/misc.ts","webpack://cloud-home-app/./feature/common/utils/orgInfoUtils.ts","webpack://cloud-home-app/./feature/home/components/refresh-design/helpers.ts","webpack://cloud-home-app/./test/mocks/gcomMocks.ts","webpack://cloud-home-app/./feature/notification-banners/api/notificationBannerApi.ts","webpack://cloud-home-app/./feature/notification-banners/consts/billing.ts","webpack://cloud-home-app/./feature/notification-banners/types/Banner.ts","webpack://cloud-home-app/./feature/notification-banners/utils/misc.ts","webpack://cloud-home-app/./feature/notification-banners/utils/notificationBanners.ts","webpack://cloud-home-app/./feature/onboarding/consts/consts.ts","webpack://cloud-home-app/./feature/onboarding/types/TestGroup.ts","webpack://cloud-home-app/./feature/usage/consts/usage.ts","webpack://cloud-home-app/./feature/usage/types/MetricUnit.ts","webpack://cloud-home-app/./feature/usage/utils/bytes.ts","webpack://cloud-home-app/./feature/usage/types/CircleColor.ts","webpack://cloud-home-app/./feature/usage/utils/usageUtils.ts","webpack://cloud-home-app/external amd \"@emotion/css\"","webpack://cloud-home-app/external amd \"@grafana/data\"","webpack://cloud-home-app/external amd \"@grafana/runtime\"","webpack://cloud-home-app/external amd \"@grafana/ui\"","webpack://cloud-home-app/external amd \"app/core/core\"","webpack://cloud-home-app/external amd \"app/features/dashboard/impression_store\"","webpack://cloud-home-app/external amd \"lodash\"","webpack://cloud-home-app/external amd \"react\"","webpack://cloud-home-app/external amd \"react-dom\"","webpack://cloud-home-app/external amd \"react-redux\"","webpack://cloud-home-app/external amd \"react-router\"","webpack://cloud-home-app/external amd \"redux\"","webpack://cloud-home-app/external amd \"rxjs\"","webpack://cloud-home-app/webpack/bootstrap","webpack://cloud-home-app/webpack/runtime/amd options","webpack://cloud-home-app/webpack/runtime/compat get default export","webpack://cloud-home-app/webpack/runtime/define property getters","webpack://cloud-home-app/webpack/runtime/ensure chunk","webpack://cloud-home-app/webpack/runtime/get javascript chunk filename","webpack://cloud-home-app/webpack/runtime/global","webpack://cloud-home-app/webpack/runtime/hasOwnProperty shorthand","webpack://cloud-home-app/webpack/runtime/make namespace object","webpack://cloud-home-app/webpack/runtime/node module decorator","webpack://cloud-home-app/webpack/runtime/publicPath","webpack://cloud-home-app/webpack/runtime/jsonp chunk loading","webpack://cloud-home-app/./feature/notification-banners/components/UpgradeNow.tsx","webpack://cloud-home-app/./feature/notification-banners/components/Button.styles.ts","webpack://cloud-home-app/./feature/notification-banners/components/FreeNotificationBanner.tsx","webpack://cloud-home-app/./feature/notification-banners/components/LimitExceededNotificationBanner.tsx","webpack://cloud-home-app/./feature/notification-banners/components/TrialNotificationBanner.tsx","webpack://cloud-home-app/./feature/notification-banners/components/K6LimitReachedNotificationBanner.tsx","webpack://cloud-home-app/./feature/notification-banners/components/FeO11YLimitReachedNotificationBanner.tsx","webpack://cloud-home-app/./feature/notification-banners/components/AppO11YLimitReachedNotificationBanner.tsx","webpack://cloud-home-app/./feature/notification-banners/components/SyntheticMonitoringLimitNotificationBanner.tsx","webpack://cloud-home-app/./feature/notification-banners/components/InitNotificationBanners.tsx","webpack://cloud-home-app/./module.tsx","webpack://cloud-home-app/./preload.ts"],"sourcesContent":["var inProgress = {};\nvar dataWebpackPrefix = \"cloud-home-app:\";\n// loadScript function to load a script via script tag\n__webpack_require__.l = (url, done, key, chunkId) => {\n\tif(inProgress[url]) { inProgress[url].push(done); return; }\n\tvar script, needAttach;\n\tif(key !== undefined) {\n\t\tvar scripts = document.getElementsByTagName(\"script\");\n\t\tfor(var i = 0; i < scripts.length; i++) {\n\t\t\tvar s = scripts[i];\n\t\t\tif(s.getAttribute(\"src\") == url || s.getAttribute(\"data-webpack\") == dataWebpackPrefix + key) { script = s; break; }\n\t\t}\n\t}\n\tif(!script) {\n\t\tneedAttach = true;\n\t\tscript = document.createElement('script');\n\n\t\tscript.charset = 'utf-8';\n\t\tscript.timeout = 120;\n\t\tif (__webpack_require__.nc) {\n\t\t\tscript.setAttribute(\"nonce\", __webpack_require__.nc);\n\t\t}\n\t\tscript.setAttribute(\"data-webpack\", dataWebpackPrefix + key);\n\n\t\tscript.src = url;\n\t}\n\tinProgress[url] = [done];\n\tvar onScriptComplete = (prev, event) => {\n\t\t// avoid mem leaks in IE.\n\t\tscript.onerror = script.onload = null;\n\t\tclearTimeout(timeout);\n\t\tvar doneFns = inProgress[url];\n\t\tdelete inProgress[url];\n\t\tscript.parentNode && script.parentNode.removeChild(script);\n\t\tdoneFns && doneFns.forEach((fn) => (fn(event)));\n\t\tif(prev) return prev(event);\n\t}\n\tvar timeout = setTimeout(onScriptComplete.bind(null, undefined, { type: 'timeout', target: script }), 120000);\n\tscript.onerror = onScriptComplete.bind(null, script.onerror);\n\tscript.onload = onScriptComplete.bind(null, script.onload);\n\tneedAttach && document.head.appendChild(script);\n};","const ANY = Symbol('SemVer ANY')\n// hoisted class for cyclic dependency\nclass Comparator {\n static get ANY () {\n return ANY\n }\n\n constructor (comp, options) {\n options = parseOptions(options)\n\n if (comp instanceof Comparator) {\n if (comp.loose === !!options.loose) {\n return comp\n } else {\n comp = comp.value\n }\n }\n\n comp = comp.trim().split(/\\s+/).join(' ')\n debug('comparator', comp, options)\n this.options = options\n this.loose = !!options.loose\n this.parse(comp)\n\n if (this.semver === ANY) {\n this.value = ''\n } else {\n this.value = this.operator + this.semver.version\n }\n\n debug('comp', this)\n }\n\n parse (comp) {\n const r = this.options.loose ? re[t.COMPARATORLOOSE] : re[t.COMPARATOR]\n const m = comp.match(r)\n\n if (!m) {\n throw new TypeError(`Invalid comparator: ${comp}`)\n }\n\n this.operator = m[1] !== undefined ? m[1] : ''\n if (this.operator === '=') {\n this.operator = ''\n }\n\n // if it literally is just '>' or '' then allow anything.\n if (!m[2]) {\n this.semver = ANY\n } else {\n this.semver = new SemVer(m[2], this.options.loose)\n }\n }\n\n toString () {\n return this.value\n }\n\n test (version) {\n debug('Comparator.test', version, this.options.loose)\n\n if (this.semver === ANY || version === ANY) {\n return true\n }\n\n if (typeof version === 'string') {\n try {\n version = new SemVer(version, this.options)\n } catch (er) {\n return false\n }\n }\n\n return cmp(version, this.operator, this.semver, this.options)\n }\n\n intersects (comp, options) {\n if (!(comp instanceof Comparator)) {\n throw new TypeError('a Comparator is required')\n }\n\n if (this.operator === '') {\n if (this.value === '') {\n return true\n }\n return new Range(comp.value, options).test(this.value)\n } else if (comp.operator === '') {\n if (comp.value === '') {\n return true\n }\n return new Range(this.value, options).test(comp.semver)\n }\n\n options = parseOptions(options)\n\n // Special cases where nothing can possibly be lower\n if (options.includePrerelease &&\n (this.value === '<0.0.0-0' || comp.value === '<0.0.0-0')) {\n return false\n }\n if (!options.includePrerelease &&\n (this.value.startsWith('<0.0.0') || comp.value.startsWith('<0.0.0'))) {\n return false\n }\n\n // Same direction increasing (> or >=)\n if (this.operator.startsWith('>') && comp.operator.startsWith('>')) {\n return true\n }\n // Same direction decreasing (< or <=)\n if (this.operator.startsWith('<') && comp.operator.startsWith('<')) {\n return true\n }\n // same SemVer and both sides are inclusive (<= or >=)\n if (\n (this.semver.version === comp.semver.version) &&\n this.operator.includes('=') && comp.operator.includes('=')) {\n return true\n }\n // opposite directions less than\n if (cmp(this.semver, '<', comp.semver, options) &&\n this.operator.startsWith('>') && comp.operator.startsWith('<')) {\n return true\n }\n // opposite directions greater than\n if (cmp(this.semver, '>', comp.semver, options) &&\n this.operator.startsWith('<') && comp.operator.startsWith('>')) {\n return true\n }\n return false\n }\n}\n\nmodule.exports = Comparator\n\nconst parseOptions = require('../internal/parse-options')\nconst { safeRe: re, t } = require('../internal/re')\nconst cmp = require('../functions/cmp')\nconst debug = require('../internal/debug')\nconst SemVer = require('./semver')\nconst Range = require('./range')\n","const SPACE_CHARACTERS = /\\s+/g\n\n// hoisted class for cyclic dependency\nclass Range {\n constructor (range, options) {\n options = parseOptions(options)\n\n if (range instanceof Range) {\n if (\n range.loose === !!options.loose &&\n range.includePrerelease === !!options.includePrerelease\n ) {\n return range\n } else {\n return new Range(range.raw, options)\n }\n }\n\n if (range instanceof Comparator) {\n // just put it in the set and return\n this.raw = range.value\n this.set = [[range]]\n this.formatted = undefined\n return this\n }\n\n this.options = options\n this.loose = !!options.loose\n this.includePrerelease = !!options.includePrerelease\n\n // First reduce all whitespace as much as possible so we do not have to rely\n // on potentially slow regexes like \\s*. This is then stored and used for\n // future error messages as well.\n this.raw = range.trim().replace(SPACE_CHARACTERS, ' ')\n\n // First, split on ||\n this.set = this.raw\n .split('||')\n // map the range to a 2d array of comparators\n .map(r => this.parseRange(r.trim()))\n // throw out any comparator lists that are empty\n // this generally means that it was not a valid range, which is allowed\n // in loose mode, but will still throw if the WHOLE range is invalid.\n .filter(c => c.length)\n\n if (!this.set.length) {\n throw new TypeError(`Invalid SemVer Range: ${this.raw}`)\n }\n\n // if we have any that are not the null set, throw out null sets.\n if (this.set.length > 1) {\n // keep the first one, in case they're all null sets\n const first = this.set[0]\n this.set = this.set.filter(c => !isNullSet(c[0]))\n if (this.set.length === 0) {\n this.set = [first]\n } else if (this.set.length > 1) {\n // if we have any that are *, then the range is just *\n for (const c of this.set) {\n if (c.length === 1 && isAny(c[0])) {\n this.set = [c]\n break\n }\n }\n }\n }\n\n this.formatted = undefined\n }\n\n get range () {\n if (this.formatted === undefined) {\n this.formatted = ''\n for (let i = 0; i < this.set.length; i++) {\n if (i > 0) {\n this.formatted += '||'\n }\n const comps = this.set[i]\n for (let k = 0; k < comps.length; k++) {\n if (k > 0) {\n this.formatted += ' '\n }\n this.formatted += comps[k].toString().trim()\n }\n }\n }\n return this.formatted\n }\n\n format () {\n return this.range\n }\n\n toString () {\n return this.range\n }\n\n parseRange (range) {\n // memoize range parsing for performance.\n // this is a very hot path, and fully deterministic.\n const memoOpts =\n (this.options.includePrerelease && FLAG_INCLUDE_PRERELEASE) |\n (this.options.loose && FLAG_LOOSE)\n const memoKey = memoOpts + ':' + range\n const cached = cache.get(memoKey)\n if (cached) {\n return cached\n }\n\n const loose = this.options.loose\n // `1.2.3 - 1.2.4` => `>=1.2.3 <=1.2.4`\n const hr = loose ? re[t.HYPHENRANGELOOSE] : re[t.HYPHENRANGE]\n range = range.replace(hr, hyphenReplace(this.options.includePrerelease))\n debug('hyphen replace', range)\n\n // `> 1.2.3 < 1.2.5` => `>1.2.3 <1.2.5`\n range = range.replace(re[t.COMPARATORTRIM], comparatorTrimReplace)\n debug('comparator trim', range)\n\n // `~ 1.2.3` => `~1.2.3`\n range = range.replace(re[t.TILDETRIM], tildeTrimReplace)\n debug('tilde trim', range)\n\n // `^ 1.2.3` => `^1.2.3`\n range = range.replace(re[t.CARETTRIM], caretTrimReplace)\n debug('caret trim', range)\n\n // At this point, the range is completely trimmed and\n // ready to be split into comparators.\n\n let rangeList = range\n .split(' ')\n .map(comp => parseComparator(comp, this.options))\n .join(' ')\n .split(/\\s+/)\n // >=0.0.0 is equivalent to *\n .map(comp => replaceGTE0(comp, this.options))\n\n if (loose) {\n // in loose mode, throw out any that are not valid comparators\n rangeList = rangeList.filter(comp => {\n debug('loose invalid filter', comp, this.options)\n return !!comp.match(re[t.COMPARATORLOOSE])\n })\n }\n debug('range list', rangeList)\n\n // if any comparators are the null set, then replace with JUST null set\n // if more than one comparator, remove any * comparators\n // also, don't include the same comparator more than once\n const rangeMap = new Map()\n const comparators = rangeList.map(comp => new Comparator(comp, this.options))\n for (const comp of comparators) {\n if (isNullSet(comp)) {\n return [comp]\n }\n rangeMap.set(comp.value, comp)\n }\n if (rangeMap.size > 1 && rangeMap.has('')) {\n rangeMap.delete('')\n }\n\n const result = [...rangeMap.values()]\n cache.set(memoKey, result)\n return result\n }\n\n intersects (range, options) {\n if (!(range instanceof Range)) {\n throw new TypeError('a Range is required')\n }\n\n return this.set.some((thisComparators) => {\n return (\n isSatisfiable(thisComparators, options) &&\n range.set.some((rangeComparators) => {\n return (\n isSatisfiable(rangeComparators, options) &&\n thisComparators.every((thisComparator) => {\n return rangeComparators.every((rangeComparator) => {\n return thisComparator.intersects(rangeComparator, options)\n })\n })\n )\n })\n )\n })\n }\n\n // if ANY of the sets match ALL of its comparators, then pass\n test (version) {\n if (!version) {\n return false\n }\n\n if (typeof version === 'string') {\n try {\n version = new SemVer(version, this.options)\n } catch (er) {\n return false\n }\n }\n\n for (let i = 0; i < this.set.length; i++) {\n if (testSet(this.set[i], version, this.options)) {\n return true\n }\n }\n return false\n }\n}\n\nmodule.exports = Range\n\nconst LRU = require('../internal/lrucache')\nconst cache = new LRU()\n\nconst parseOptions = require('../internal/parse-options')\nconst Comparator = require('./comparator')\nconst debug = require('../internal/debug')\nconst SemVer = require('./semver')\nconst {\n safeRe: re,\n t,\n comparatorTrimReplace,\n tildeTrimReplace,\n caretTrimReplace,\n} = require('../internal/re')\nconst { FLAG_INCLUDE_PRERELEASE, FLAG_LOOSE } = require('../internal/constants')\n\nconst isNullSet = c => c.value === '<0.0.0-0'\nconst isAny = c => c.value === ''\n\n// take a set of comparators and determine whether there\n// exists a version which can satisfy it\nconst isSatisfiable = (comparators, options) => {\n let result = true\n const remainingComparators = comparators.slice()\n let testComparator = remainingComparators.pop()\n\n while (result && remainingComparators.length) {\n result = remainingComparators.every((otherComparator) => {\n return testComparator.intersects(otherComparator, options)\n })\n\n testComparator = remainingComparators.pop()\n }\n\n return result\n}\n\n// comprised of xranges, tildes, stars, and gtlt's at this point.\n// already replaced the hyphen ranges\n// turn into a set of JUST comparators.\nconst parseComparator = (comp, options) => {\n debug('comp', comp, options)\n comp = replaceCarets(comp, options)\n debug('caret', comp)\n comp = replaceTildes(comp, options)\n debug('tildes', comp)\n comp = replaceXRanges(comp, options)\n debug('xrange', comp)\n comp = replaceStars(comp, options)\n debug('stars', comp)\n return comp\n}\n\nconst isX = id => !id || id.toLowerCase() === 'x' || id === '*'\n\n// ~, ~> --> * (any, kinda silly)\n// ~2, ~2.x, ~2.x.x, ~>2, ~>2.x ~>2.x.x --> >=2.0.0 <3.0.0-0\n// ~2.0, ~2.0.x, ~>2.0, ~>2.0.x --> >=2.0.0 <2.1.0-0\n// ~1.2, ~1.2.x, ~>1.2, ~>1.2.x --> >=1.2.0 <1.3.0-0\n// ~1.2.3, ~>1.2.3 --> >=1.2.3 <1.3.0-0\n// ~1.2.0, ~>1.2.0 --> >=1.2.0 <1.3.0-0\n// ~0.0.1 --> >=0.0.1 <0.1.0-0\nconst replaceTildes = (comp, options) => {\n return comp\n .trim()\n .split(/\\s+/)\n .map((c) => replaceTilde(c, options))\n .join(' ')\n}\n\nconst replaceTilde = (comp, options) => {\n const r = options.loose ? re[t.TILDELOOSE] : re[t.TILDE]\n return comp.replace(r, (_, M, m, p, pr) => {\n debug('tilde', comp, _, M, m, p, pr)\n let ret\n\n if (isX(M)) {\n ret = ''\n } else if (isX(m)) {\n ret = `>=${M}.0.0 <${+M + 1}.0.0-0`\n } else if (isX(p)) {\n // ~1.2 == >=1.2.0 <1.3.0-0\n ret = `>=${M}.${m}.0 <${M}.${+m + 1}.0-0`\n } else if (pr) {\n debug('replaceTilde pr', pr)\n ret = `>=${M}.${m}.${p}-${pr\n } <${M}.${+m + 1}.0-0`\n } else {\n // ~1.2.3 == >=1.2.3 <1.3.0-0\n ret = `>=${M}.${m}.${p\n } <${M}.${+m + 1}.0-0`\n }\n\n debug('tilde return', ret)\n return ret\n })\n}\n\n// ^ --> * (any, kinda silly)\n// ^2, ^2.x, ^2.x.x --> >=2.0.0 <3.0.0-0\n// ^2.0, ^2.0.x --> >=2.0.0 <3.0.0-0\n// ^1.2, ^1.2.x --> >=1.2.0 <2.0.0-0\n// ^1.2.3 --> >=1.2.3 <2.0.0-0\n// ^1.2.0 --> >=1.2.0 <2.0.0-0\n// ^0.0.1 --> >=0.0.1 <0.0.2-0\n// ^0.1.0 --> >=0.1.0 <0.2.0-0\nconst replaceCarets = (comp, options) => {\n return comp\n .trim()\n .split(/\\s+/)\n .map((c) => replaceCaret(c, options))\n .join(' ')\n}\n\nconst replaceCaret = (comp, options) => {\n debug('caret', comp, options)\n const r = options.loose ? re[t.CARETLOOSE] : re[t.CARET]\n const z = options.includePrerelease ? '-0' : ''\n return comp.replace(r, (_, M, m, p, pr) => {\n debug('caret', comp, _, M, m, p, pr)\n let ret\n\n if (isX(M)) {\n ret = ''\n } else if (isX(m)) {\n ret = `>=${M}.0.0${z} <${+M + 1}.0.0-0`\n } else if (isX(p)) {\n if (M === '0') {\n ret = `>=${M}.${m}.0${z} <${M}.${+m + 1}.0-0`\n } else {\n ret = `>=${M}.${m}.0${z} <${+M + 1}.0.0-0`\n }\n } else if (pr) {\n debug('replaceCaret pr', pr)\n if (M === '0') {\n if (m === '0') {\n ret = `>=${M}.${m}.${p}-${pr\n } <${M}.${m}.${+p + 1}-0`\n } else {\n ret = `>=${M}.${m}.${p}-${pr\n } <${M}.${+m + 1}.0-0`\n }\n } else {\n ret = `>=${M}.${m}.${p}-${pr\n } <${+M + 1}.0.0-0`\n }\n } else {\n debug('no pr')\n if (M === '0') {\n if (m === '0') {\n ret = `>=${M}.${m}.${p\n }${z} <${M}.${m}.${+p + 1}-0`\n } else {\n ret = `>=${M}.${m}.${p\n }${z} <${M}.${+m + 1}.0-0`\n }\n } else {\n ret = `>=${M}.${m}.${p\n } <${+M + 1}.0.0-0`\n }\n }\n\n debug('caret return', ret)\n return ret\n })\n}\n\nconst replaceXRanges = (comp, options) => {\n debug('replaceXRanges', comp, options)\n return comp\n .split(/\\s+/)\n .map((c) => replaceXRange(c, options))\n .join(' ')\n}\n\nconst replaceXRange = (comp, options) => {\n comp = comp.trim()\n const r = options.loose ? re[t.XRANGELOOSE] : re[t.XRANGE]\n return comp.replace(r, (ret, gtlt, M, m, p, pr) => {\n debug('xRange', comp, ret, gtlt, M, m, p, pr)\n const xM = isX(M)\n const xm = xM || isX(m)\n const xp = xm || isX(p)\n const anyX = xp\n\n if (gtlt === '=' && anyX) {\n gtlt = ''\n }\n\n // if we're including prereleases in the match, then we need\n // to fix this to -0, the lowest possible prerelease value\n pr = options.includePrerelease ? '-0' : ''\n\n if (xM) {\n if (gtlt === '>' || gtlt === '<') {\n // nothing is allowed\n ret = '<0.0.0-0'\n } else {\n // nothing is forbidden\n ret = '*'\n }\n } else if (gtlt && anyX) {\n // we know patch is an x, because we have any x at all.\n // replace X with 0\n if (xm) {\n m = 0\n }\n p = 0\n\n if (gtlt === '>') {\n // >1 => >=2.0.0\n // >1.2 => >=1.3.0\n gtlt = '>='\n if (xm) {\n M = +M + 1\n m = 0\n p = 0\n } else {\n m = +m + 1\n p = 0\n }\n } else if (gtlt === '<=') {\n // <=0.7.x is actually <0.8.0, since any 0.7.x should\n // pass. Similarly, <=7.x is actually <8.0.0, etc.\n gtlt = '<'\n if (xm) {\n M = +M + 1\n } else {\n m = +m + 1\n }\n }\n\n if (gtlt === '<') {\n pr = '-0'\n }\n\n ret = `${gtlt + M}.${m}.${p}${pr}`\n } else if (xm) {\n ret = `>=${M}.0.0${pr} <${+M + 1}.0.0-0`\n } else if (xp) {\n ret = `>=${M}.${m}.0${pr\n } <${M}.${+m + 1}.0-0`\n }\n\n debug('xRange return', ret)\n\n return ret\n })\n}\n\n// Because * is AND-ed with everything else in the comparator,\n// and '' means \"any version\", just remove the *s entirely.\nconst replaceStars = (comp, options) => {\n debug('replaceStars', comp, options)\n // Looseness is ignored here. star is always as loose as it gets!\n return comp\n .trim()\n .replace(re[t.STAR], '')\n}\n\nconst replaceGTE0 = (comp, options) => {\n debug('replaceGTE0', comp, options)\n return comp\n .trim()\n .replace(re[options.includePrerelease ? t.GTE0PRE : t.GTE0], '')\n}\n\n// This function is passed to string.replace(re[t.HYPHENRANGE])\n// M, m, patch, prerelease, build\n// 1.2 - 3.4.5 => >=1.2.0 <=3.4.5\n// 1.2.3 - 3.4 => >=1.2.0 <3.5.0-0 Any 3.4.x will do\n// 1.2 - 3.4 => >=1.2.0 <3.5.0-0\n// TODO build?\nconst hyphenReplace = incPr => ($0,\n from, fM, fm, fp, fpr, fb,\n to, tM, tm, tp, tpr) => {\n if (isX(fM)) {\n from = ''\n } else if (isX(fm)) {\n from = `>=${fM}.0.0${incPr ? '-0' : ''}`\n } else if (isX(fp)) {\n from = `>=${fM}.${fm}.0${incPr ? '-0' : ''}`\n } else if (fpr) {\n from = `>=${from}`\n } else {\n from = `>=${from}${incPr ? '-0' : ''}`\n }\n\n if (isX(tM)) {\n to = ''\n } else if (isX(tm)) {\n to = `<${+tM + 1}.0.0-0`\n } else if (isX(tp)) {\n to = `<${tM}.${+tm + 1}.0-0`\n } else if (tpr) {\n to = `<=${tM}.${tm}.${tp}-${tpr}`\n } else if (incPr) {\n to = `<${tM}.${tm}.${+tp + 1}-0`\n } else {\n to = `<=${to}`\n }\n\n return `${from} ${to}`.trim()\n}\n\nconst testSet = (set, version, options) => {\n for (let i = 0; i < set.length; i++) {\n if (!set[i].test(version)) {\n return false\n }\n }\n\n if (version.prerelease.length && !options.includePrerelease) {\n // Find the set of versions that are allowed to have prereleases\n // For example, ^1.2.3-pr.1 desugars to >=1.2.3-pr.1 <2.0.0\n // That should allow `1.2.3-pr.2` to pass.\n // However, `1.2.4-alpha.notready` should NOT be allowed,\n // even though it's within the range set by the comparators.\n for (let i = 0; i < set.length; i++) {\n debug(set[i].semver)\n if (set[i].semver === Comparator.ANY) {\n continue\n }\n\n if (set[i].semver.prerelease.length > 0) {\n const allowed = set[i].semver\n if (allowed.major === version.major &&\n allowed.minor === version.minor &&\n allowed.patch === version.patch) {\n return true\n }\n }\n }\n\n // Version has a -pre, but it's not one of the ones we like.\n return false\n }\n\n return true\n}\n","const debug = require('../internal/debug')\nconst { MAX_LENGTH, MAX_SAFE_INTEGER } = require('../internal/constants')\nconst { safeRe: re, t } = require('../internal/re')\n\nconst parseOptions = require('../internal/parse-options')\nconst { compareIdentifiers } = require('../internal/identifiers')\nclass SemVer {\n constructor (version, options) {\n options = parseOptions(options)\n\n if (version instanceof SemVer) {\n if (version.loose === !!options.loose &&\n version.includePrerelease === !!options.includePrerelease) {\n return version\n } else {\n version = version.version\n }\n } else if (typeof version !== 'string') {\n throw new TypeError(`Invalid version. Must be a string. Got type \"${typeof version}\".`)\n }\n\n if (version.length > MAX_LENGTH) {\n throw new TypeError(\n `version is longer than ${MAX_LENGTH} characters`\n )\n }\n\n debug('SemVer', version, options)\n this.options = options\n this.loose = !!options.loose\n // this isn't actually relevant for versions, but keep it so that we\n // don't run into trouble passing this.options around.\n this.includePrerelease = !!options.includePrerelease\n\n const m = version.trim().match(options.loose ? re[t.LOOSE] : re[t.FULL])\n\n if (!m) {\n throw new TypeError(`Invalid Version: ${version}`)\n }\n\n this.raw = version\n\n // these are actually numbers\n this.major = +m[1]\n this.minor = +m[2]\n this.patch = +m[3]\n\n if (this.major > MAX_SAFE_INTEGER || this.major < 0) {\n throw new TypeError('Invalid major version')\n }\n\n if (this.minor > MAX_SAFE_INTEGER || this.minor < 0) {\n throw new TypeError('Invalid minor version')\n }\n\n if (this.patch > MAX_SAFE_INTEGER || this.patch < 0) {\n throw new TypeError('Invalid patch version')\n }\n\n // numberify any prerelease numeric ids\n if (!m[4]) {\n this.prerelease = []\n } else {\n this.prerelease = m[4].split('.').map((id) => {\n if (/^[0-9]+$/.test(id)) {\n const num = +id\n if (num >= 0 && num < MAX_SAFE_INTEGER) {\n return num\n }\n }\n return id\n })\n }\n\n this.build = m[5] ? m[5].split('.') : []\n this.format()\n }\n\n format () {\n this.version = `${this.major}.${this.minor}.${this.patch}`\n if (this.prerelease.length) {\n this.version += `-${this.prerelease.join('.')}`\n }\n return this.version\n }\n\n toString () {\n return this.version\n }\n\n compare (other) {\n debug('SemVer.compare', this.version, this.options, other)\n if (!(other instanceof SemVer)) {\n if (typeof other === 'string' && other === this.version) {\n return 0\n }\n other = new SemVer(other, this.options)\n }\n\n if (other.version === this.version) {\n return 0\n }\n\n return this.compareMain(other) || this.comparePre(other)\n }\n\n compareMain (other) {\n if (!(other instanceof SemVer)) {\n other = new SemVer(other, this.options)\n }\n\n return (\n compareIdentifiers(this.major, other.major) ||\n compareIdentifiers(this.minor, other.minor) ||\n compareIdentifiers(this.patch, other.patch)\n )\n }\n\n comparePre (other) {\n if (!(other instanceof SemVer)) {\n other = new SemVer(other, this.options)\n }\n\n // NOT having a prerelease is > having one\n if (this.prerelease.length && !other.prerelease.length) {\n return -1\n } else if (!this.prerelease.length && other.prerelease.length) {\n return 1\n } else if (!this.prerelease.length && !other.prerelease.length) {\n return 0\n }\n\n let i = 0\n do {\n const a = this.prerelease[i]\n const b = other.prerelease[i]\n debug('prerelease compare', i, a, b)\n if (a === undefined && b === undefined) {\n return 0\n } else if (b === undefined) {\n return 1\n } else if (a === undefined) {\n return -1\n } else if (a === b) {\n continue\n } else {\n return compareIdentifiers(a, b)\n }\n } while (++i)\n }\n\n compareBuild (other) {\n if (!(other instanceof SemVer)) {\n other = new SemVer(other, this.options)\n }\n\n let i = 0\n do {\n const a = this.build[i]\n const b = other.build[i]\n debug('build compare', i, a, b)\n if (a === undefined && b === undefined) {\n return 0\n } else if (b === undefined) {\n return 1\n } else if (a === undefined) {\n return -1\n } else if (a === b) {\n continue\n } else {\n return compareIdentifiers(a, b)\n }\n } while (++i)\n }\n\n // preminor will bump the version up to the next minor release, and immediately\n // down to pre-release. premajor and prepatch work the same way.\n inc (release, identifier, identifierBase) {\n switch (release) {\n case 'premajor':\n this.prerelease.length = 0\n this.patch = 0\n this.minor = 0\n this.major++\n this.inc('pre', identifier, identifierBase)\n break\n case 'preminor':\n this.prerelease.length = 0\n this.patch = 0\n this.minor++\n this.inc('pre', identifier, identifierBase)\n break\n case 'prepatch':\n // If this is already a prerelease, it will bump to the next version\n // drop any prereleases that might already exist, since they are not\n // relevant at this point.\n this.prerelease.length = 0\n this.inc('patch', identifier, identifierBase)\n this.inc('pre', identifier, identifierBase)\n break\n // If the input is a non-prerelease version, this acts the same as\n // prepatch.\n case 'prerelease':\n if (this.prerelease.length === 0) {\n this.inc('patch', identifier, identifierBase)\n }\n this.inc('pre', identifier, identifierBase)\n break\n\n case 'major':\n // If this is a pre-major version, bump up to the same major version.\n // Otherwise increment major.\n // 1.0.0-5 bumps to 1.0.0\n // 1.1.0 bumps to 2.0.0\n if (\n this.minor !== 0 ||\n this.patch !== 0 ||\n this.prerelease.length === 0\n ) {\n this.major++\n }\n this.minor = 0\n this.patch = 0\n this.prerelease = []\n break\n case 'minor':\n // If this is a pre-minor version, bump up to the same minor version.\n // Otherwise increment minor.\n // 1.2.0-5 bumps to 1.2.0\n // 1.2.1 bumps to 1.3.0\n if (this.patch !== 0 || this.prerelease.length === 0) {\n this.minor++\n }\n this.patch = 0\n this.prerelease = []\n break\n case 'patch':\n // If this is not a pre-release version, it will increment the patch.\n // If it is a pre-release it will bump up to the same patch version.\n // 1.2.0-5 patches to 1.2.0\n // 1.2.0 patches to 1.2.1\n if (this.prerelease.length === 0) {\n this.patch++\n }\n this.prerelease = []\n break\n // This probably shouldn't be used publicly.\n // 1.0.0 'pre' would become 1.0.0-0 which is the wrong direction.\n case 'pre': {\n const base = Number(identifierBase) ? 1 : 0\n\n if (!identifier && identifierBase === false) {\n throw new Error('invalid increment argument: identifier is empty')\n }\n\n if (this.prerelease.length === 0) {\n this.prerelease = [base]\n } else {\n let i = this.prerelease.length\n while (--i >= 0) {\n if (typeof this.prerelease[i] === 'number') {\n this.prerelease[i]++\n i = -2\n }\n }\n if (i === -1) {\n // didn't increment anything\n if (identifier === this.prerelease.join('.') && identifierBase === false) {\n throw new Error('invalid increment argument: identifier already exists')\n }\n this.prerelease.push(base)\n }\n }\n if (identifier) {\n // 1.2.0-beta.1 bumps to 1.2.0-beta.2,\n // 1.2.0-beta.fooblz or 1.2.0-beta bumps to 1.2.0-beta.0\n let prerelease = [identifier, base]\n if (identifierBase === false) {\n prerelease = [identifier]\n }\n if (compareIdentifiers(this.prerelease[0], identifier) === 0) {\n if (isNaN(this.prerelease[1])) {\n this.prerelease = prerelease\n }\n } else {\n this.prerelease = prerelease\n }\n }\n break\n }\n default:\n throw new Error(`invalid increment argument: ${release}`)\n }\n this.raw = this.format()\n if (this.build.length) {\n this.raw += `+${this.build.join('.')}`\n }\n return this\n }\n}\n\nmodule.exports = SemVer\n","const parse = require('./parse')\nconst clean = (version, options) => {\n const s = parse(version.trim().replace(/^[=v]+/, ''), options)\n return s ? s.version : null\n}\nmodule.exports = clean\n","const eq = require('./eq')\nconst neq = require('./neq')\nconst gt = require('./gt')\nconst gte = require('./gte')\nconst lt = require('./lt')\nconst lte = require('./lte')\n\nconst cmp = (a, op, b, loose) => {\n switch (op) {\n case '===':\n if (typeof a === 'object') {\n a = a.version\n }\n if (typeof b === 'object') {\n b = b.version\n }\n return a === b\n\n case '!==':\n if (typeof a === 'object') {\n a = a.version\n }\n if (typeof b === 'object') {\n b = b.version\n }\n return a !== b\n\n case '':\n case '=':\n case '==':\n return eq(a, b, loose)\n\n case '!=':\n return neq(a, b, loose)\n\n case '>':\n return gt(a, b, loose)\n\n case '>=':\n return gte(a, b, loose)\n\n case '<':\n return lt(a, b, loose)\n\n case '<=':\n return lte(a, b, loose)\n\n default:\n throw new TypeError(`Invalid operator: ${op}`)\n }\n}\nmodule.exports = cmp\n","const SemVer = require('../classes/semver')\nconst parse = require('./parse')\nconst { safeRe: re, t } = require('../internal/re')\n\nconst coerce = (version, options) => {\n if (version instanceof SemVer) {\n return version\n }\n\n if (typeof version === 'number') {\n version = String(version)\n }\n\n if (typeof version !== 'string') {\n return null\n }\n\n options = options || {}\n\n let match = null\n if (!options.rtl) {\n match = version.match(options.includePrerelease ? re[t.COERCEFULL] : re[t.COERCE])\n } else {\n // Find the right-most coercible string that does not share\n // a terminus with a more left-ward coercible string.\n // Eg, '1.2.3.4' wants to coerce '2.3.4', not '3.4' or '4'\n // With includePrerelease option set, '1.2.3.4-rc' wants to coerce '2.3.4-rc', not '2.3.4'\n //\n // Walk through the string checking with a /g regexp\n // Manually set the index so as to pick up overlapping matches.\n // Stop when we get a match that ends at the string end, since no\n // coercible string can be more right-ward without the same terminus.\n const coerceRtlRegex = options.includePrerelease ? re[t.COERCERTLFULL] : re[t.COERCERTL]\n let next\n while ((next = coerceRtlRegex.exec(version)) &&\n (!match || match.index + match[0].length !== version.length)\n ) {\n if (!match ||\n next.index + next[0].length !== match.index + match[0].length) {\n match = next\n }\n coerceRtlRegex.lastIndex = next.index + next[1].length + next[2].length\n }\n // leave it in a clean state\n coerceRtlRegex.lastIndex = -1\n }\n\n if (match === null) {\n return null\n }\n\n const major = match[2]\n const minor = match[3] || '0'\n const patch = match[4] || '0'\n const prerelease = options.includePrerelease && match[5] ? `-${match[5]}` : ''\n const build = options.includePrerelease && match[6] ? `+${match[6]}` : ''\n\n return parse(`${major}.${minor}.${patch}${prerelease}${build}`, options)\n}\nmodule.exports = coerce\n","const SemVer = require('../classes/semver')\nconst compareBuild = (a, b, loose) => {\n const versionA = new SemVer(a, loose)\n const versionB = new SemVer(b, loose)\n return versionA.compare(versionB) || versionA.compareBuild(versionB)\n}\nmodule.exports = compareBuild\n","const compare = require('./compare')\nconst compareLoose = (a, b) => compare(a, b, true)\nmodule.exports = compareLoose\n","const SemVer = require('../classes/semver')\nconst compare = (a, b, loose) =>\n new SemVer(a, loose).compare(new SemVer(b, loose))\n\nmodule.exports = compare\n","const parse = require('./parse.js')\n\nconst diff = (version1, version2) => {\n const v1 = parse(version1, null, true)\n const v2 = parse(version2, null, true)\n const comparison = v1.compare(v2)\n\n if (comparison === 0) {\n return null\n }\n\n const v1Higher = comparison > 0\n const highVersion = v1Higher ? v1 : v2\n const lowVersion = v1Higher ? v2 : v1\n const highHasPre = !!highVersion.prerelease.length\n const lowHasPre = !!lowVersion.prerelease.length\n\n if (lowHasPre && !highHasPre) {\n // Going from prerelease -> no prerelease requires some special casing\n\n // If the low version has only a major, then it will always be a major\n // Some examples:\n // 1.0.0-1 -> 1.0.0\n // 1.0.0-1 -> 1.1.1\n // 1.0.0-1 -> 2.0.0\n if (!lowVersion.patch && !lowVersion.minor) {\n return 'major'\n }\n\n // Otherwise it can be determined by checking the high version\n\n if (highVersion.patch) {\n // anything higher than a patch bump would result in the wrong version\n return 'patch'\n }\n\n if (highVersion.minor) {\n // anything higher than a minor bump would result in the wrong version\n return 'minor'\n }\n\n // bumping major/minor/patch all have same result\n return 'major'\n }\n\n // add the `pre` prefix if we are going to a prerelease version\n const prefix = highHasPre ? 'pre' : ''\n\n if (v1.major !== v2.major) {\n return prefix + 'major'\n }\n\n if (v1.minor !== v2.minor) {\n return prefix + 'minor'\n }\n\n if (v1.patch !== v2.patch) {\n return prefix + 'patch'\n }\n\n // high and low are preleases\n return 'prerelease'\n}\n\nmodule.exports = diff\n","const compare = require('./compare')\nconst eq = (a, b, loose) => compare(a, b, loose) === 0\nmodule.exports = eq\n","const compare = require('./compare')\nconst gt = (a, b, loose) => compare(a, b, loose) > 0\nmodule.exports = gt\n","const compare = require('./compare')\nconst gte = (a, b, loose) => compare(a, b, loose) >= 0\nmodule.exports = gte\n","const SemVer = require('../classes/semver')\n\nconst inc = (version, release, options, identifier, identifierBase) => {\n if (typeof (options) === 'string') {\n identifierBase = identifier\n identifier = options\n options = undefined\n }\n\n try {\n return new SemVer(\n version instanceof SemVer ? version.version : version,\n options\n ).inc(release, identifier, identifierBase).version\n } catch (er) {\n return null\n }\n}\nmodule.exports = inc\n","const compare = require('./compare')\nconst lt = (a, b, loose) => compare(a, b, loose) < 0\nmodule.exports = lt\n","const compare = require('./compare')\nconst lte = (a, b, loose) => compare(a, b, loose) <= 0\nmodule.exports = lte\n","const SemVer = require('../classes/semver')\nconst major = (a, loose) => new SemVer(a, loose).major\nmodule.exports = major\n","const SemVer = require('../classes/semver')\nconst minor = (a, loose) => new SemVer(a, loose).minor\nmodule.exports = minor\n","const compare = require('./compare')\nconst neq = (a, b, loose) => compare(a, b, loose) !== 0\nmodule.exports = neq\n","const SemVer = require('../classes/semver')\nconst parse = (version, options, throwErrors = false) => {\n if (version instanceof SemVer) {\n return version\n }\n try {\n return new SemVer(version, options)\n } catch (er) {\n if (!throwErrors) {\n return null\n }\n throw er\n }\n}\n\nmodule.exports = parse\n","const SemVer = require('../classes/semver')\nconst patch = (a, loose) => new SemVer(a, loose).patch\nmodule.exports = patch\n","const parse = require('./parse')\nconst prerelease = (version, options) => {\n const parsed = parse(version, options)\n return (parsed && parsed.prerelease.length) ? parsed.prerelease : null\n}\nmodule.exports = prerelease\n","const compare = require('./compare')\nconst rcompare = (a, b, loose) => compare(b, a, loose)\nmodule.exports = rcompare\n","const compareBuild = require('./compare-build')\nconst rsort = (list, loose) => list.sort((a, b) => compareBuild(b, a, loose))\nmodule.exports = rsort\n","const Range = require('../classes/range')\nconst satisfies = (version, range, options) => {\n try {\n range = new Range(range, options)\n } catch (er) {\n return false\n }\n return range.test(version)\n}\nmodule.exports = satisfies\n","const compareBuild = require('./compare-build')\nconst sort = (list, loose) => list.sort((a, b) => compareBuild(a, b, loose))\nmodule.exports = sort\n","const parse = require('./parse')\nconst valid = (version, options) => {\n const v = parse(version, options)\n return v ? v.version : null\n}\nmodule.exports = valid\n","// just pre-load all the stuff that index.js lazily exports\nconst internalRe = require('./internal/re')\nconst constants = require('./internal/constants')\nconst SemVer = require('./classes/semver')\nconst identifiers = require('./internal/identifiers')\nconst parse = require('./functions/parse')\nconst valid = require('./functions/valid')\nconst clean = require('./functions/clean')\nconst inc = require('./functions/inc')\nconst diff = require('./functions/diff')\nconst major = require('./functions/major')\nconst minor = require('./functions/minor')\nconst patch = require('./functions/patch')\nconst prerelease = require('./functions/prerelease')\nconst compare = require('./functions/compare')\nconst rcompare = require('./functions/rcompare')\nconst compareLoose = require('./functions/compare-loose')\nconst compareBuild = require('./functions/compare-build')\nconst sort = require('./functions/sort')\nconst rsort = require('./functions/rsort')\nconst gt = require('./functions/gt')\nconst lt = require('./functions/lt')\nconst eq = require('./functions/eq')\nconst neq = require('./functions/neq')\nconst gte = require('./functions/gte')\nconst lte = require('./functions/lte')\nconst cmp = require('./functions/cmp')\nconst coerce = require('./functions/coerce')\nconst Comparator = require('./classes/comparator')\nconst Range = require('./classes/range')\nconst satisfies = require('./functions/satisfies')\nconst toComparators = require('./ranges/to-comparators')\nconst maxSatisfying = require('./ranges/max-satisfying')\nconst minSatisfying = require('./ranges/min-satisfying')\nconst minVersion = require('./ranges/min-version')\nconst validRange = require('./ranges/valid')\nconst outside = require('./ranges/outside')\nconst gtr = require('./ranges/gtr')\nconst ltr = require('./ranges/ltr')\nconst intersects = require('./ranges/intersects')\nconst simplifyRange = require('./ranges/simplify')\nconst subset = require('./ranges/subset')\nmodule.exports = {\n parse,\n valid,\n clean,\n inc,\n diff,\n major,\n minor,\n patch,\n prerelease,\n compare,\n rcompare,\n compareLoose,\n compareBuild,\n sort,\n rsort,\n gt,\n lt,\n eq,\n neq,\n gte,\n lte,\n cmp,\n coerce,\n Comparator,\n Range,\n satisfies,\n toComparators,\n maxSatisfying,\n minSatisfying,\n minVersion,\n validRange,\n outside,\n gtr,\n ltr,\n intersects,\n simplifyRange,\n subset,\n SemVer,\n re: internalRe.re,\n src: internalRe.src,\n tokens: internalRe.t,\n SEMVER_SPEC_VERSION: constants.SEMVER_SPEC_VERSION,\n RELEASE_TYPES: constants.RELEASE_TYPES,\n compareIdentifiers: identifiers.compareIdentifiers,\n rcompareIdentifiers: identifiers.rcompareIdentifiers,\n}\n","// Note: this is the semver.org version of the spec that it implements\n// Not necessarily the package version of this code.\nconst SEMVER_SPEC_VERSION = '2.0.0'\n\nconst MAX_LENGTH = 256\nconst MAX_SAFE_INTEGER = Number.MAX_SAFE_INTEGER ||\n/* istanbul ignore next */ 9007199254740991\n\n// Max safe segment length for coercion.\nconst MAX_SAFE_COMPONENT_LENGTH = 16\n\n// Max safe length for a build identifier. The max length minus 6 characters for\n// the shortest version with a build 0.0.0+BUILD.\nconst MAX_SAFE_BUILD_LENGTH = MAX_LENGTH - 6\n\nconst RELEASE_TYPES = [\n 'major',\n 'premajor',\n 'minor',\n 'preminor',\n 'patch',\n 'prepatch',\n 'prerelease',\n]\n\nmodule.exports = {\n MAX_LENGTH,\n MAX_SAFE_COMPONENT_LENGTH,\n MAX_SAFE_BUILD_LENGTH,\n MAX_SAFE_INTEGER,\n RELEASE_TYPES,\n SEMVER_SPEC_VERSION,\n FLAG_INCLUDE_PRERELEASE: 0b001,\n FLAG_LOOSE: 0b010,\n}\n","const debug = (\n typeof process === 'object' &&\n process.env &&\n process.env.NODE_DEBUG &&\n /\\bsemver\\b/i.test(process.env.NODE_DEBUG)\n) ? (...args) => console.error('SEMVER', ...args)\n : () => {}\n\nmodule.exports = debug\n","const numeric = /^[0-9]+$/\nconst compareIdentifiers = (a, b) => {\n const anum = numeric.test(a)\n const bnum = numeric.test(b)\n\n if (anum && bnum) {\n a = +a\n b = +b\n }\n\n return a === b ? 0\n : (anum && !bnum) ? -1\n : (bnum && !anum) ? 1\n : a < b ? -1\n : 1\n}\n\nconst rcompareIdentifiers = (a, b) => compareIdentifiers(b, a)\n\nmodule.exports = {\n compareIdentifiers,\n rcompareIdentifiers,\n}\n","class LRUCache {\n constructor () {\n this.max = 1000\n this.map = new Map()\n }\n\n get (key) {\n const value = this.map.get(key)\n if (value === undefined) {\n return undefined\n } else {\n // Remove the key from the map and add it to the end\n this.map.delete(key)\n this.map.set(key, value)\n return value\n }\n }\n\n delete (key) {\n return this.map.delete(key)\n }\n\n set (key, value) {\n const deleted = this.delete(key)\n\n if (!deleted && value !== undefined) {\n // If cache is full, delete the least recently used item\n if (this.map.size >= this.max) {\n const firstKey = this.map.keys().next().value\n this.delete(firstKey)\n }\n\n this.map.set(key, value)\n }\n\n return this\n }\n}\n\nmodule.exports = LRUCache\n","// parse out just the options we care about\nconst looseOption = Object.freeze({ loose: true })\nconst emptyOpts = Object.freeze({ })\nconst parseOptions = options => {\n if (!options) {\n return emptyOpts\n }\n\n if (typeof options !== 'object') {\n return looseOption\n }\n\n return options\n}\nmodule.exports = parseOptions\n","const {\n MAX_SAFE_COMPONENT_LENGTH,\n MAX_SAFE_BUILD_LENGTH,\n MAX_LENGTH,\n} = require('./constants')\nconst debug = require('./debug')\nexports = module.exports = {}\n\n// The actual regexps go on exports.re\nconst re = exports.re = []\nconst safeRe = exports.safeRe = []\nconst src = exports.src = []\nconst t = exports.t = {}\nlet R = 0\n\nconst LETTERDASHNUMBER = '[a-zA-Z0-9-]'\n\n// Replace some greedy regex tokens to prevent regex dos issues. These regex are\n// used internally via the safeRe object since all inputs in this library get\n// normalized first to trim and collapse all extra whitespace. The original\n// regexes are exported for userland consumption and lower level usage. A\n// future breaking change could export the safer regex only with a note that\n// all input should have extra whitespace removed.\nconst safeRegexReplacements = [\n ['\\\\s', 1],\n ['\\\\d', MAX_LENGTH],\n [LETTERDASHNUMBER, MAX_SAFE_BUILD_LENGTH],\n]\n\nconst makeSafeRegex = (value) => {\n for (const [token, max] of safeRegexReplacements) {\n value = value\n .split(`${token}*`).join(`${token}{0,${max}}`)\n .split(`${token}+`).join(`${token}{1,${max}}`)\n }\n return value\n}\n\nconst createToken = (name, value, isGlobal) => {\n const safe = makeSafeRegex(value)\n const index = R++\n debug(name, index, value)\n t[name] = index\n src[index] = value\n re[index] = new RegExp(value, isGlobal ? 'g' : undefined)\n safeRe[index] = new RegExp(safe, isGlobal ? 'g' : undefined)\n}\n\n// The following Regular Expressions can be used for tokenizing,\n// validating, and parsing SemVer version strings.\n\n// ## Numeric Identifier\n// A single `0`, or a non-zero digit followed by zero or more digits.\n\ncreateToken('NUMERICIDENTIFIER', '0|[1-9]\\\\d*')\ncreateToken('NUMERICIDENTIFIERLOOSE', '\\\\d+')\n\n// ## Non-numeric Identifier\n// Zero or more digits, followed by a letter or hyphen, and then zero or\n// more letters, digits, or hyphens.\n\ncreateToken('NONNUMERICIDENTIFIER', `\\\\d*[a-zA-Z-]${LETTERDASHNUMBER}*`)\n\n// ## Main Version\n// Three dot-separated numeric identifiers.\n\ncreateToken('MAINVERSION', `(${src[t.NUMERICIDENTIFIER]})\\\\.` +\n `(${src[t.NUMERICIDENTIFIER]})\\\\.` +\n `(${src[t.NUMERICIDENTIFIER]})`)\n\ncreateToken('MAINVERSIONLOOSE', `(${src[t.NUMERICIDENTIFIERLOOSE]})\\\\.` +\n `(${src[t.NUMERICIDENTIFIERLOOSE]})\\\\.` +\n `(${src[t.NUMERICIDENTIFIERLOOSE]})`)\n\n// ## Pre-release Version Identifier\n// A numeric identifier, or a non-numeric identifier.\n\ncreateToken('PRERELEASEIDENTIFIER', `(?:${src[t.NUMERICIDENTIFIER]\n}|${src[t.NONNUMERICIDENTIFIER]})`)\n\ncreateToken('PRERELEASEIDENTIFIERLOOSE', `(?:${src[t.NUMERICIDENTIFIERLOOSE]\n}|${src[t.NONNUMERICIDENTIFIER]})`)\n\n// ## Pre-release Version\n// Hyphen, followed by one or more dot-separated pre-release version\n// identifiers.\n\ncreateToken('PRERELEASE', `(?:-(${src[t.PRERELEASEIDENTIFIER]\n}(?:\\\\.${src[t.PRERELEASEIDENTIFIER]})*))`)\n\ncreateToken('PRERELEASELOOSE', `(?:-?(${src[t.PRERELEASEIDENTIFIERLOOSE]\n}(?:\\\\.${src[t.PRERELEASEIDENTIFIERLOOSE]})*))`)\n\n// ## Build Metadata Identifier\n// Any combination of digits, letters, or hyphens.\n\ncreateToken('BUILDIDENTIFIER', `${LETTERDASHNUMBER}+`)\n\n// ## Build Metadata\n// Plus sign, followed by one or more period-separated build metadata\n// identifiers.\n\ncreateToken('BUILD', `(?:\\\\+(${src[t.BUILDIDENTIFIER]\n}(?:\\\\.${src[t.BUILDIDENTIFIER]})*))`)\n\n// ## Full Version String\n// A main version, followed optionally by a pre-release version and\n// build metadata.\n\n// Note that the only major, minor, patch, and pre-release sections of\n// the version string are capturing groups. The build metadata is not a\n// capturing group, because it should not ever be used in version\n// comparison.\n\ncreateToken('FULLPLAIN', `v?${src[t.MAINVERSION]\n}${src[t.PRERELEASE]}?${\n src[t.BUILD]}?`)\n\ncreateToken('FULL', `^${src[t.FULLPLAIN]}$`)\n\n// like full, but allows v1.2.3 and =1.2.3, which people do sometimes.\n// also, 1.0.0alpha1 (prerelease without the hyphen) which is pretty\n// common in the npm registry.\ncreateToken('LOOSEPLAIN', `[v=\\\\s]*${src[t.MAINVERSIONLOOSE]\n}${src[t.PRERELEASELOOSE]}?${\n src[t.BUILD]}?`)\n\ncreateToken('LOOSE', `^${src[t.LOOSEPLAIN]}$`)\n\ncreateToken('GTLT', '((?:<|>)?=?)')\n\n// Something like \"2.*\" or \"1.2.x\".\n// Note that \"x.x\" is a valid xRange identifer, meaning \"any version\"\n// Only the first item is strictly required.\ncreateToken('XRANGEIDENTIFIERLOOSE', `${src[t.NUMERICIDENTIFIERLOOSE]}|x|X|\\\\*`)\ncreateToken('XRANGEIDENTIFIER', `${src[t.NUMERICIDENTIFIER]}|x|X|\\\\*`)\n\ncreateToken('XRANGEPLAIN', `[v=\\\\s]*(${src[t.XRANGEIDENTIFIER]})` +\n `(?:\\\\.(${src[t.XRANGEIDENTIFIER]})` +\n `(?:\\\\.(${src[t.XRANGEIDENTIFIER]})` +\n `(?:${src[t.PRERELEASE]})?${\n src[t.BUILD]}?` +\n `)?)?`)\n\ncreateToken('XRANGEPLAINLOOSE', `[v=\\\\s]*(${src[t.XRANGEIDENTIFIERLOOSE]})` +\n `(?:\\\\.(${src[t.XRANGEIDENTIFIERLOOSE]})` +\n `(?:\\\\.(${src[t.XRANGEIDENTIFIERLOOSE]})` +\n `(?:${src[t.PRERELEASELOOSE]})?${\n src[t.BUILD]}?` +\n `)?)?`)\n\ncreateToken('XRANGE', `^${src[t.GTLT]}\\\\s*${src[t.XRANGEPLAIN]}$`)\ncreateToken('XRANGELOOSE', `^${src[t.GTLT]}\\\\s*${src[t.XRANGEPLAINLOOSE]}$`)\n\n// Coercion.\n// Extract anything that could conceivably be a part of a valid semver\ncreateToken('COERCEPLAIN', `${'(^|[^\\\\d])' +\n '(\\\\d{1,'}${MAX_SAFE_COMPONENT_LENGTH}})` +\n `(?:\\\\.(\\\\d{1,${MAX_SAFE_COMPONENT_LENGTH}}))?` +\n `(?:\\\\.(\\\\d{1,${MAX_SAFE_COMPONENT_LENGTH}}))?`)\ncreateToken('COERCE', `${src[t.COERCEPLAIN]}(?:$|[^\\\\d])`)\ncreateToken('COERCEFULL', src[t.COERCEPLAIN] +\n `(?:${src[t.PRERELEASE]})?` +\n `(?:${src[t.BUILD]})?` +\n `(?:$|[^\\\\d])`)\ncreateToken('COERCERTL', src[t.COERCE], true)\ncreateToken('COERCERTLFULL', src[t.COERCEFULL], true)\n\n// Tilde ranges.\n// Meaning is \"reasonably at or greater than\"\ncreateToken('LONETILDE', '(?:~>?)')\n\ncreateToken('TILDETRIM', `(\\\\s*)${src[t.LONETILDE]}\\\\s+`, true)\nexports.tildeTrimReplace = '$1~'\n\ncreateToken('TILDE', `^${src[t.LONETILDE]}${src[t.XRANGEPLAIN]}$`)\ncreateToken('TILDELOOSE', `^${src[t.LONETILDE]}${src[t.XRANGEPLAINLOOSE]}$`)\n\n// Caret ranges.\n// Meaning is \"at least and backwards compatible with\"\ncreateToken('LONECARET', '(?:\\\\^)')\n\ncreateToken('CARETTRIM', `(\\\\s*)${src[t.LONECARET]}\\\\s+`, true)\nexports.caretTrimReplace = '$1^'\n\ncreateToken('CARET', `^${src[t.LONECARET]}${src[t.XRANGEPLAIN]}$`)\ncreateToken('CARETLOOSE', `^${src[t.LONECARET]}${src[t.XRANGEPLAINLOOSE]}$`)\n\n// A simple gt/lt/eq thing, or just \"\" to indicate \"any version\"\ncreateToken('COMPARATORLOOSE', `^${src[t.GTLT]}\\\\s*(${src[t.LOOSEPLAIN]})$|^$`)\ncreateToken('COMPARATOR', `^${src[t.GTLT]}\\\\s*(${src[t.FULLPLAIN]})$|^$`)\n\n// An expression to strip any whitespace between the gtlt and the thing\n// it modifies, so that `> 1.2.3` ==> `>1.2.3`\ncreateToken('COMPARATORTRIM', `(\\\\s*)${src[t.GTLT]\n}\\\\s*(${src[t.LOOSEPLAIN]}|${src[t.XRANGEPLAIN]})`, true)\nexports.comparatorTrimReplace = '$1$2$3'\n\n// Something like `1.2.3 - 1.2.4`\n// Note that these all use the loose form, because they'll be\n// checked against either the strict or loose comparator form\n// later.\ncreateToken('HYPHENRANGE', `^\\\\s*(${src[t.XRANGEPLAIN]})` +\n `\\\\s+-\\\\s+` +\n `(${src[t.XRANGEPLAIN]})` +\n `\\\\s*$`)\n\ncreateToken('HYPHENRANGELOOSE', `^\\\\s*(${src[t.XRANGEPLAINLOOSE]})` +\n `\\\\s+-\\\\s+` +\n `(${src[t.XRANGEPLAINLOOSE]})` +\n `\\\\s*$`)\n\n// Star ranges basically just allow anything at all.\ncreateToken('STAR', '(<|>)?=?\\\\s*\\\\*')\n// >=0.0.0 is like a star\ncreateToken('GTE0', '^\\\\s*>=\\\\s*0\\\\.0\\\\.0\\\\s*$')\ncreateToken('GTE0PRE', '^\\\\s*>=\\\\s*0\\\\.0\\\\.0-0\\\\s*$')\n","// Determine if version is greater than all the versions possible in the range.\nconst outside = require('./outside')\nconst gtr = (version, range, options) => outside(version, range, '>', options)\nmodule.exports = gtr\n","const Range = require('../classes/range')\nconst intersects = (r1, r2, options) => {\n r1 = new Range(r1, options)\n r2 = new Range(r2, options)\n return r1.intersects(r2, options)\n}\nmodule.exports = intersects\n","const outside = require('./outside')\n// Determine if version is less than all the versions possible in the range\nconst ltr = (version, range, options) => outside(version, range, '<', options)\nmodule.exports = ltr\n","const SemVer = require('../classes/semver')\nconst Range = require('../classes/range')\n\nconst maxSatisfying = (versions, range, options) => {\n let max = null\n let maxSV = null\n let rangeObj = null\n try {\n rangeObj = new Range(range, options)\n } catch (er) {\n return null\n }\n versions.forEach((v) => {\n if (rangeObj.test(v)) {\n // satisfies(v, range, options)\n if (!max || maxSV.compare(v) === -1) {\n // compare(max, v, true)\n max = v\n maxSV = new SemVer(max, options)\n }\n }\n })\n return max\n}\nmodule.exports = maxSatisfying\n","const SemVer = require('../classes/semver')\nconst Range = require('../classes/range')\nconst minSatisfying = (versions, range, options) => {\n let min = null\n let minSV = null\n let rangeObj = null\n try {\n rangeObj = new Range(range, options)\n } catch (er) {\n return null\n }\n versions.forEach((v) => {\n if (rangeObj.test(v)) {\n // satisfies(v, range, options)\n if (!min || minSV.compare(v) === 1) {\n // compare(min, v, true)\n min = v\n minSV = new SemVer(min, options)\n }\n }\n })\n return min\n}\nmodule.exports = minSatisfying\n","const SemVer = require('../classes/semver')\nconst Range = require('../classes/range')\nconst gt = require('../functions/gt')\n\nconst minVersion = (range, loose) => {\n range = new Range(range, loose)\n\n let minver = new SemVer('0.0.0')\n if (range.test(minver)) {\n return minver\n }\n\n minver = new SemVer('0.0.0-0')\n if (range.test(minver)) {\n return minver\n }\n\n minver = null\n for (let i = 0; i < range.set.length; ++i) {\n const comparators = range.set[i]\n\n let setMin = null\n comparators.forEach((comparator) => {\n // Clone to avoid manipulating the comparator's semver object.\n const compver = new SemVer(comparator.semver.version)\n switch (comparator.operator) {\n case '>':\n if (compver.prerelease.length === 0) {\n compver.patch++\n } else {\n compver.prerelease.push(0)\n }\n compver.raw = compver.format()\n /* fallthrough */\n case '':\n case '>=':\n if (!setMin || gt(compver, setMin)) {\n setMin = compver\n }\n break\n case '<':\n case '<=':\n /* Ignore maximum versions */\n break\n /* istanbul ignore next */\n default:\n throw new Error(`Unexpected operation: ${comparator.operator}`)\n }\n })\n if (setMin && (!minver || gt(minver, setMin))) {\n minver = setMin\n }\n }\n\n if (minver && range.test(minver)) {\n return minver\n }\n\n return null\n}\nmodule.exports = minVersion\n","const SemVer = require('../classes/semver')\nconst Comparator = require('../classes/comparator')\nconst { ANY } = Comparator\nconst Range = require('../classes/range')\nconst satisfies = require('../functions/satisfies')\nconst gt = require('../functions/gt')\nconst lt = require('../functions/lt')\nconst lte = require('../functions/lte')\nconst gte = require('../functions/gte')\n\nconst outside = (version, range, hilo, options) => {\n version = new SemVer(version, options)\n range = new Range(range, options)\n\n let gtfn, ltefn, ltfn, comp, ecomp\n switch (hilo) {\n case '>':\n gtfn = gt\n ltefn = lte\n ltfn = lt\n comp = '>'\n ecomp = '>='\n break\n case '<':\n gtfn = lt\n ltefn = gte\n ltfn = gt\n comp = '<'\n ecomp = '<='\n break\n default:\n throw new TypeError('Must provide a hilo val of \"<\" or \">\"')\n }\n\n // If it satisfies the range it is not outside\n if (satisfies(version, range, options)) {\n return false\n }\n\n // From now on, variable terms are as if we're in \"gtr\" mode.\n // but note that everything is flipped for the \"ltr\" function.\n\n for (let i = 0; i < range.set.length; ++i) {\n const comparators = range.set[i]\n\n let high = null\n let low = null\n\n comparators.forEach((comparator) => {\n if (comparator.semver === ANY) {\n comparator = new Comparator('>=0.0.0')\n }\n high = high || comparator\n low = low || comparator\n if (gtfn(comparator.semver, high.semver, options)) {\n high = comparator\n } else if (ltfn(comparator.semver, low.semver, options)) {\n low = comparator\n }\n })\n\n // If the edge version comparator has a operator then our version\n // isn't outside it\n if (high.operator === comp || high.operator === ecomp) {\n return false\n }\n\n // If the lowest version comparator has an operator and our version\n // is less than it then it isn't higher than the range\n if ((!low.operator || low.operator === comp) &&\n ltefn(version, low.semver)) {\n return false\n } else if (low.operator === ecomp && ltfn(version, low.semver)) {\n return false\n }\n }\n return true\n}\n\nmodule.exports = outside\n","// given a set of versions and a range, create a \"simplified\" range\n// that includes the same versions that the original range does\n// If the original range is shorter than the simplified one, return that.\nconst satisfies = require('../functions/satisfies.js')\nconst compare = require('../functions/compare.js')\nmodule.exports = (versions, range, options) => {\n const set = []\n let first = null\n let prev = null\n const v = versions.sort((a, b) => compare(a, b, options))\n for (const version of v) {\n const included = satisfies(version, range, options)\n if (included) {\n prev = version\n if (!first) {\n first = version\n }\n } else {\n if (prev) {\n set.push([first, prev])\n }\n prev = null\n first = null\n }\n }\n if (first) {\n set.push([first, null])\n }\n\n const ranges = []\n for (const [min, max] of set) {\n if (min === max) {\n ranges.push(min)\n } else if (!max && min === v[0]) {\n ranges.push('*')\n } else if (!max) {\n ranges.push(`>=${min}`)\n } else if (min === v[0]) {\n ranges.push(`<=${max}`)\n } else {\n ranges.push(`${min} - ${max}`)\n }\n }\n const simplified = ranges.join(' || ')\n const original = typeof range.raw === 'string' ? range.raw : String(range)\n return simplified.length < original.length ? simplified : range\n}\n","const Range = require('../classes/range.js')\nconst Comparator = require('../classes/comparator.js')\nconst { ANY } = Comparator\nconst satisfies = require('../functions/satisfies.js')\nconst compare = require('../functions/compare.js')\n\n// Complex range `r1 || r2 || ...` is a subset of `R1 || R2 || ...` iff:\n// - Every simple range `r1, r2, ...` is a null set, OR\n// - Every simple range `r1, r2, ...` which is not a null set is a subset of\n// some `R1, R2, ...`\n//\n// Simple range `c1 c2 ...` is a subset of simple range `C1 C2 ...` iff:\n// - If c is only the ANY comparator\n// - If C is only the ANY comparator, return true\n// - Else if in prerelease mode, return false\n// - else replace c with `[>=0.0.0]`\n// - If C is only the ANY comparator\n// - if in prerelease mode, return true\n// - else replace C with `[>=0.0.0]`\n// - Let EQ be the set of = comparators in c\n// - If EQ is more than one, return true (null set)\n// - Let GT be the highest > or >= comparator in c\n// - Let LT be the lowest < or <= comparator in c\n// - If GT and LT, and GT.semver > LT.semver, return true (null set)\n// - If any C is a = range, and GT or LT are set, return false\n// - If EQ\n// - If GT, and EQ does not satisfy GT, return true (null set)\n// - If LT, and EQ does not satisfy LT, return true (null set)\n// - If EQ satisfies every C, return true\n// - Else return false\n// - If GT\n// - If GT.semver is lower than any > or >= comp in C, return false\n// - If GT is >=, and GT.semver does not satisfy every C, return false\n// - If GT.semver has a prerelease, and not in prerelease mode\n// - If no C has a prerelease and the GT.semver tuple, return false\n// - If LT\n// - If LT.semver is greater than any < or <= comp in C, return false\n// - If LT is <=, and LT.semver does not satisfy every C, return false\n// - If GT.semver has a prerelease, and not in prerelease mode\n// - If no C has a prerelease and the LT.semver tuple, return false\n// - Else return true\n\nconst subset = (sub, dom, options = {}) => {\n if (sub === dom) {\n return true\n }\n\n sub = new Range(sub, options)\n dom = new Range(dom, options)\n let sawNonNull = false\n\n OUTER: for (const simpleSub of sub.set) {\n for (const simpleDom of dom.set) {\n const isSub = simpleSubset(simpleSub, simpleDom, options)\n sawNonNull = sawNonNull || isSub !== null\n if (isSub) {\n continue OUTER\n }\n }\n // the null set is a subset of everything, but null simple ranges in\n // a complex range should be ignored. so if we saw a non-null range,\n // then we know this isn't a subset, but if EVERY simple range was null,\n // then it is a subset.\n if (sawNonNull) {\n return false\n }\n }\n return true\n}\n\nconst minimumVersionWithPreRelease = [new Comparator('>=0.0.0-0')]\nconst minimumVersion = [new Comparator('>=0.0.0')]\n\nconst simpleSubset = (sub, dom, options) => {\n if (sub === dom) {\n return true\n }\n\n if (sub.length === 1 && sub[0].semver === ANY) {\n if (dom.length === 1 && dom[0].semver === ANY) {\n return true\n } else if (options.includePrerelease) {\n sub = minimumVersionWithPreRelease\n } else {\n sub = minimumVersion\n }\n }\n\n if (dom.length === 1 && dom[0].semver === ANY) {\n if (options.includePrerelease) {\n return true\n } else {\n dom = minimumVersion\n }\n }\n\n const eqSet = new Set()\n let gt, lt\n for (const c of sub) {\n if (c.operator === '>' || c.operator === '>=') {\n gt = higherGT(gt, c, options)\n } else if (c.operator === '<' || c.operator === '<=') {\n lt = lowerLT(lt, c, options)\n } else {\n eqSet.add(c.semver)\n }\n }\n\n if (eqSet.size > 1) {\n return null\n }\n\n let gtltComp\n if (gt && lt) {\n gtltComp = compare(gt.semver, lt.semver, options)\n if (gtltComp > 0) {\n return null\n } else if (gtltComp === 0 && (gt.operator !== '>=' || lt.operator !== '<=')) {\n return null\n }\n }\n\n // will iterate one or zero times\n for (const eq of eqSet) {\n if (gt && !satisfies(eq, String(gt), options)) {\n return null\n }\n\n if (lt && !satisfies(eq, String(lt), options)) {\n return null\n }\n\n for (const c of dom) {\n if (!satisfies(eq, String(c), options)) {\n return false\n }\n }\n\n return true\n }\n\n let higher, lower\n let hasDomLT, hasDomGT\n // if the subset has a prerelease, we need a comparator in the superset\n // with the same tuple and a prerelease, or it's not a subset\n let needDomLTPre = lt &&\n !options.includePrerelease &&\n lt.semver.prerelease.length ? lt.semver : false\n let needDomGTPre = gt &&\n !options.includePrerelease &&\n gt.semver.prerelease.length ? gt.semver : false\n // exception: <1.2.3-0 is the same as <1.2.3\n if (needDomLTPre && needDomLTPre.prerelease.length === 1 &&\n lt.operator === '<' && needDomLTPre.prerelease[0] === 0) {\n needDomLTPre = false\n }\n\n for (const c of dom) {\n hasDomGT = hasDomGT || c.operator === '>' || c.operator === '>='\n hasDomLT = hasDomLT || c.operator === '<' || c.operator === '<='\n if (gt) {\n if (needDomGTPre) {\n if (c.semver.prerelease && c.semver.prerelease.length &&\n c.semver.major === needDomGTPre.major &&\n c.semver.minor === needDomGTPre.minor &&\n c.semver.patch === needDomGTPre.patch) {\n needDomGTPre = false\n }\n }\n if (c.operator === '>' || c.operator === '>=') {\n higher = higherGT(gt, c, options)\n if (higher === c && higher !== gt) {\n return false\n }\n } else if (gt.operator === '>=' && !satisfies(gt.semver, String(c), options)) {\n return false\n }\n }\n if (lt) {\n if (needDomLTPre) {\n if (c.semver.prerelease && c.semver.prerelease.length &&\n c.semver.major === needDomLTPre.major &&\n c.semver.minor === needDomLTPre.minor &&\n c.semver.patch === needDomLTPre.patch) {\n needDomLTPre = false\n }\n }\n if (c.operator === '<' || c.operator === '<=') {\n lower = lowerLT(lt, c, options)\n if (lower === c && lower !== lt) {\n return false\n }\n } else if (lt.operator === '<=' && !satisfies(lt.semver, String(c), options)) {\n return false\n }\n }\n if (!c.operator && (lt || gt) && gtltComp !== 0) {\n return false\n }\n }\n\n // if there was a < or >, and nothing in the dom, then must be false\n // UNLESS it was limited by another range in the other direction.\n // Eg, >1.0.0 <1.0.1 is still a subset of <2.0.0\n if (gt && hasDomLT && !lt && gtltComp !== 0) {\n return false\n }\n\n if (lt && hasDomGT && !gt && gtltComp !== 0) {\n return false\n }\n\n // we needed a prerelease range in a specific tuple, but didn't get one\n // then this isn't a subset. eg >=1.2.3-pre is not a subset of >=1.0.0,\n // because it includes prereleases in the 1.2.3 tuple\n if (needDomGTPre || needDomLTPre) {\n return false\n }\n\n return true\n}\n\n// >=1.2.3 is lower than >1.2.3\nconst higherGT = (a, b, options) => {\n if (!a) {\n return b\n }\n const comp = compare(a.semver, b.semver, options)\n return comp > 0 ? a\n : comp < 0 ? b\n : b.operator === '>' && a.operator === '>=' ? b\n : a\n}\n\n// <=1.2.3 is higher than <1.2.3\nconst lowerLT = (a, b, options) => {\n if (!a) {\n return b\n }\n const comp = compare(a.semver, b.semver, options)\n return comp < 0 ? a\n : comp > 0 ? b\n : b.operator === '<' && a.operator === '<=' ? b\n : a\n}\n\nmodule.exports = subset\n","const Range = require('../classes/range')\n\n// Mostly just for testing and legacy API reasons\nconst toComparators = (range, options) =>\n new Range(range, options).set\n .map(comp => comp.map(c => c.value).join(' ').trim().split(' '))\n\nmodule.exports = toComparators\n","const Range = require('../classes/range')\nconst validRange = (range, options) => {\n try {\n // Return '*' instead of '' so that truthiness works.\n // This will throw if it's invalid anyway\n return new Range(range, options).range || '*'\n } catch (er) {\n return null\n }\n}\nmodule.exports = validRange\n","import { BackendSrvRequest, config, getBackendSrv } from '@grafana/runtime';\nimport { lastValueFrom } from 'rxjs';\nimport { QueryError } from 'feature/common/types/QueryError';\nimport { BaseQueryFn } from '@reduxjs/toolkit/query';\nimport { DataSourceInstanceSettings } from '@grafana/data';\n\nexport const PLUGIN_ID = 'cloud-home-app';\n\nfunction fetchApi(\n url: string,\n optionsOverride: Partial = {}\n): Promise> {\n const options: BackendSrvRequest = {\n headers: {},\n url: url,\n showErrorAlert: false,\n ...optionsOverride,\n };\n return lastValueFrom(getBackendSrv().fetch(options));\n}\n\nexport async function apiGet(url: string, optionsOverride: Partial = {}): Promise {\n const response = await fetchApi(url, { ...optionsOverride, method: 'GET' });\n if (isErrorResponse(response)) {\n throw response as ErrorFetchResponse;\n }\n return response?.data;\n}\n\nexport async function apiPost(url: string, data: any, optionsOverride: Partial = {}): Promise {\n const response = await fetchApi(url, { ...optionsOverride, method: 'POST', data });\n\n if (isErrorResponse(response)) {\n throw response as ErrorFetchResponse;\n }\n return response?.data;\n}\n\ninterface SuccessfulFetchResponse {\n status: number;\n data: T;\n}\n\ninterface ErrorFetchResponse {\n status: number;\n data: E;\n}\n\nfunction isErrorResponse(thing: any): boolean {\n return (\n typeof thing === 'object' &&\n 'status' in thing &&\n !isNaN(thing.status) &&\n (thing.status < 200 || thing.status >= 300)\n );\n}\n\nfunction getError(\n e: any,\n defaultMessage = 'Error while running the service'\n): {\n error: QueryError;\n} {\n let code;\n let message = e?.message;\n if (e?.data) {\n message = e.data?.message;\n if (e.data?.error) {\n message = e.data.error.message ?? e.data.error;\n code = e.data.error.code;\n }\n }\n if (!message) {\n message = defaultMessage;\n }\n const response = { error: { data: { message } } as QueryError };\n if (e.status) {\n response.error.status = e.status;\n }\n if (code) {\n response.error.code = code;\n }\n return response;\n}\n\nconst getBaseQueryOptions = (\n args: string | Partial\n): { url: string; options: Partial } => {\n let options: Partial;\n let url;\n if (typeof args === 'string') {\n url = args;\n options = { method: 'GET', headers: {} };\n } else {\n url = (args as BackendSrvRequest).url ?? '';\n options = { ...args, headers: args.headers ?? {} };\n delete options.url;\n }\n return { url, options };\n};\n\ntype BackendSrvQueryArg = { baseUrl?: string; dataSourceName?: string };\n\nexport const backendSrvBaseQuery =\n ({\n baseUrl = '',\n dataSourceName,\n }: BackendSrvQueryArg): BaseQueryFn, unknown, QueryError> =>\n async (args) => {\n const { url, options } = getBaseQueryOptions(args);\n let queryUrl = baseUrl + url;\n\n try {\n // used when querying daa sources\n if (!!dataSourceName) {\n const datasource: DataSourceInstanceSettings | undefined = dataSourceName\n ? Object.values(config.datasources).find((el) => el.name === dataSourceName)\n : undefined;\n if (!datasource) {\n return { error: { data: { message: `No datasource called ${dataSourceName} found.` } } as QueryError };\n }\n queryUrl = `${datasource.url}${url}`;\n\n if (datasource.basicAuth || datasource.withCredentials) {\n options.withCredentials = true;\n }\n\n if (datasource.basicAuth && options.headers) {\n options.headers.Authorization = datasource.basicAuth;\n }\n }\n const response = await fetchApi(queryUrl, options);\n if (isErrorResponse(response)) {\n return getError(response);\n }\n return { data: response?.data };\n } catch (error) {\n return getError(error);\n }\n };\n","import { getConnectionUrl } from 'feature/common/utils/misc';\nimport { OnboardingPaths } from 'feature/onboarding/consts/consts';\n\nconst basePath = '/a/cloud-home-app';\nconst onboarding = `${basePath}/onboarding-flow`;\nconst quickStartsBasePath = `${basePath}/onboarding-flow/quickstart`;\n\nexport const appPaths = {\n home: basePath,\n quickStarts: quickStartsBasePath,\n gettingStarted: `${basePath}/getting-started`,\n onboarding,\n\n setupWizard: `${basePath}/setup-wizard`,\n\n cloudServices: `${onboarding}/${OnboardingPaths.cloudServices}`,\n createDashboard: `${onboarding}/${OnboardingPaths.createDashboard}`,\n docsPlugin: '/a/grafana-selfservetutorials-app',\n hostedData: `${onboarding}/${OnboardingPaths.hostedData}`,\n linuxNode: `/a/grafana-selfservetutorials-app/linux-node`,\n logsOnboarding: `${onboarding}/${OnboardingPaths.logsOnboarding}`,\n multipleLinuxHosts: `/a/grafana-selfservetutorials-app/monitor-multiple-linux-hosts`,\n prometheus: `${onboarding}/${OnboardingPaths.prometheus}`,\n selfHostedMetrics: `/a/grafana-selfservetutorials-app/self-hosted-metrics`,\n setupGuide: `${basePath}/setup-guide`,\n prometheusQuickstarts: `${quickStartsBasePath}/prometheus`,\n};\n\nexport const externalPaths = {\n integrationsAndConnections: getConnectionUrl(),\n alertRulesList: '/alerting/list',\n alerts: '/alerting',\n applicationObservability: '/a/grafana-app-observability-app/services',\n applicationO11y: '/a/grafana-app-observability-app/initialize',\n billingDashboard: '/d/i933Yr2nk/billing-usage?orgId=1',\n connectionDatasources: '/connections/datasources',\n dashboards: '/dashboards',\n demoDashboards: '/a/grafana-demodashboards-app',\n faro: 'a/grafana-kowalski-app/apps',\n feO11Y: 'a/grafana-kowalski-app/apps',\n firingAlertRules: '/alerting/list?search=state:firing',\n grafanaPlay: 'https://play.grafana.org/d/',\n kubernetesCluster: '/a/grafana-k8s-app/configuration/cluster-config',\n k6App: `/a/k6-app/initialize`,\n k6Projects: `/a/k6-app/projects`,\n incidents: '/a/grafana-incident-app',\n irm: '/alerts-and-incidents',\n irmActiveUsers: '/alerting/notifications/receivers/new?alertmanager=grafana&query=',\n monitorKubernetes: '/a/grafana-k8s-app/home',\n newAlertRules: '/alerting/new/alerting?returnTo=/alerting/list',\n onCall: '/a/grafana-oncall-app',\n profiles: '/a/grafana-pyroscope-app',\n pyroscope: 'a/grafana-pyroscope-app/tag-explorer',\n syntheticMonitoringApp: '/a/grafana-synthetic-monitoring-app',\n syntheticMonitoringChecks: '/a/grafana-synthetic-monitoring-app/checks/new',\n};\n","export enum CLOUD_PLATFORM {\n AWS = 'aws',\n GCP = 'gcp',\n AZURE = 'azure',\n}\n","export enum SubscriptionCodeType {\n FREE = 'grafana-cloud-free',\n FREE_TRIAL = 'grafana-cloud-free-trial',\n PRO = 'grafana-cloud-pro',\n ADVANCED = 'grafana-cloud-advanced',\n SS_ADVANCED = 'grafana-cloud-ss-advanced',\n}\n","// source: https://github.com/grafana/grafana-com/blob/main/packages/grafana-com-base/lib/types/org-grafana-cloud.ts\nexport enum Tiers {\n Disabled = 'disabled',\n Free = 'free',\n Trial = 'trial',\n Pro = 'subscribed',\n PendingCancellation = 'pending-cancellation',\n TrialUpgraded = 'trial-upgraded',\n GCPPro = 'gcp-subscribed',\n GCPPending = 'gcp-pending',\n GCPFlatFeePro = 'gcp-flat-fee-subscribed',\n // There should not be any new orgs with this status (GCPFlatFeeOnHold)\n GCPFlatFeeOnHold = 'gcp-flat-fee-on-hold',\n AzurePro = 'azure-subscribed',\n AzureSuspended = 'azure-suspended',\n AzurePending = 'azure-pending',\n AwsPro = 'aws-subscribed',\n AwsPending = 'aws-pending',\n}\n","import { QueryError } from 'feature/common/types/QueryError';\n\nexport type CurrentUser = {\n authLabels: string[];\n avatarUrl: string;\n createdAt: string;\n email: string;\n id: number;\n isDisabled: boolean;\n isExternal: boolean;\n isGrafanaAdmin: boolean;\n login: string;\n name: string;\n orgId: number;\n theme: string;\n updatedAt: string;\n};\n\nexport type User = {\n orgId: number;\n userId: number;\n avatarUrl: string;\n email: string;\n role: string;\n lastSeenAt: string;\n lastSeenAtAge: string;\n login: string;\n name: string;\n};\n\nexport enum ROLE {\n ANY = 'Any',\n ADMIN = 'Admin',\n VIEWER = 'Viewer',\n EDITOR = 'Editor',\n}\n\nexport type Org = {\n orgId: number;\n name: string;\n role: ROLE;\n};\n\nexport type CurrentUserData = {\n currentUser: CurrentUser | undefined;\n isLoading: boolean;\n isAdmin: boolean | undefined;\n isError: boolean;\n isSuccess: boolean;\n error: QueryError | undefined;\n orgRole: ROLE | undefined;\n};\n","import { isCloudRBACRolesEnabled } from './featureToggles';\nimport { CurrentUser, Org, ROLE, User } from '../types/User';\nimport { ContextServType, ContextUser } from 'feature/common/types/ContextServType';\n\nconst getContextSrv: () => ContextServType | null | undefined = () => require('grafana/app/core/core').contextSrv;\n\nexport const isUserAdmin = (): boolean => {\n return getContextSrv()?.hasRole?.('Admin') === true;\n};\n\nexport const isUserEditor = (): boolean => {\n return getContextSrv()?.hasRole?.('Editor') === true;\n};\n\nexport const isUserViewer = (): boolean => {\n return getContextSrv()?.hasRole?.('Viewer') === true;\n};\n\nexport const isSignedIn = (): boolean => {\n return getContextSrv()?.isSignedIn === true;\n};\n\nexport const getContextUser = (): ContextUser | undefined => {\n return getContextSrv()?.user;\n};\n\nexport const isAdmin = (user: CurrentUser | undefined, orgs: Org[] | undefined) => {\n if (!!user && !!orgs) {\n const { orgId } = user;\n const currentOrg = orgs.find((org) => org.orgId === orgId);\n\n return currentOrg?.role === ROLE.ADMIN;\n }\n return false;\n};\n\nexport const getOrgRole = (user: CurrentUser | undefined, orgs: Org[] | undefined): ROLE | undefined => {\n if (!!user && !!orgs) {\n const { orgId } = user;\n const currentOrg = orgs.find((org) => org.orgId === orgId);\n\n return currentOrg?.role as ROLE;\n }\n return undefined;\n};\n\nexport function excludeLocalAdmin(users: User[]): User[] {\n return users.filter((user) => user.email !== 'admin@localhost');\n}\n\nexport enum Action {\n SupportTicketsRead = 'cloud.support-tickets:read',\n SupportTicketsWrite = 'cloud.support-tickets:write',\n}\n\n// if \"cloudRBACRoles\" feature toggle is enabled action will be used\n// to evaluate if a user has access. Otherwise fallback will be used.\nfunction hasAccess(action: Action, fallback: ROLE): boolean {\n if (!isCloudRBACRolesEnabled()) {\n if (fallback === ROLE.ANY) {\n return true;\n }\n return getContextSrv()?.hasRole?.(fallback) === true;\n }\n return getContextSrv()?.hasPermission?.(action) === true;\n}\n\n// if \"cloudRBACRoles\" feature toggle is enabled actions will be used\n// to evaluate if a user has access. Otherwise fallback will be used.\nexport function hasAnyAccess(fallback: ROLE, ...actions: Action[]): boolean {\n return actions.findIndex((v) => hasAccess(v, fallback)) !== -1;\n}\n","import { FeatureToggles } from '@grafana/data';\nimport { config } from '@grafana/runtime';\n\nenum CloudHomeFeatureToggle {\n integrationPreviews = 'cloudHomeConnectionPreviews',\n homeSetupGuide = 'homeSetupGuide',\n}\n\ntype CloudHomeFeatureToggles = FeatureToggles & {\n [key in CloudHomeFeatureToggle]: boolean;\n};\n\nfunction isFeatureToggleEnabled(featureName: CloudHomeFeatureToggle): boolean {\n return (config.featureToggles as CloudHomeFeatureToggles)[featureName] ?? false;\n}\n\nexport function isCloudRBACRolesEnabled(): boolean {\n return config.featureToggles.cloudRBACRoles ?? false;\n}\n\nexport function isConnectionsPreviewEnabled(): boolean {\n return isFeatureToggleEnabled(CloudHomeFeatureToggle.integrationPreviews);\n}\n\nexport function isHomeSetupGuideEnabled(): boolean {\n return isFeatureToggleEnabled(CloudHomeFeatureToggle.homeSetupGuide);\n}\n","import semver from 'semver';\nimport { config } from '@grafana/runtime';\n\nexport const PLUGIN_URL = `/a/cloud-home-app/`;\n\nexport const lsGet = (key: string) => {\n const item = localStorage.getItem(key);\n\n if (!item) {\n return;\n }\n\n return JSON.parse(item);\n};\n\nexport const lsExists = (key: string) => {\n const item = localStorage.getItem(key);\n\n return Boolean(item);\n};\n\nexport const lsSave = (key: string, value: object | string) => {\n if (typeof value === 'object') {\n value = JSON.stringify(value);\n }\n\n if (typeof value !== 'string') {\n console.error(\"Can't store unrecognized format value\");\n }\n\n localStorage.setItem(key, value);\n};\n\nexport const lsRemove = (key: string) => {\n localStorage.removeItem(key);\n};\n\nexport const lsKeys = {\n showFreeBanner: 'showFreeBanner',\n showTrialBanner: 'showTrialBanner',\n showLimitExceededBanner: 'showLimitExceededBanner',\n isNewUserTestVariation: 'newUserTestVariation',\n onboardingVisited: 'onboardingVisited',\n showK6LimitReached: 'showK6LimitReached',\n showFeO11YLimitReached: 'showFeO11YLimitReached',\n showAppO11YLimitReached: 'showAppO11YLimitReached',\n showSyntheticMonitoringLimitReached: 'showSyntheticMonitoringLimitReached',\n};\n\nexport function isConnectionsSectionPresent() {\n return semver.gte(config.buildInfo.version, '9.5.0');\n}\n\nfunction isGrafanaAtLeast10() {\n // 10.0.0-cloud1 is a prerelease of 10.0.0, and therefore smaller than 10.0.0,\n // but we want to return true for it.\n // The largest minor release in Grafana 9 was 9.5.\n return semver.gt(config.buildInfo.version, '9.9.0');\n}\n\nexport const getConnectionUrl = (): string => {\n if (isGrafanaAtLeast10()) {\n return '/connections/add-new-connection';\n } else if (isConnectionsSectionPresent()) {\n return '/connections/connect-data';\n } else {\n return '/a/grafana-easystart-app';\n }\n};\n\nexport function waitForElm(selector: string) {\n return new Promise((resolve) => {\n if (document.querySelector(selector)) {\n return resolve(document.querySelector(selector));\n }\n\n const observer = new MutationObserver((mutations) => {\n if (document.querySelector(selector)) {\n resolve(document.querySelector(selector));\n observer.disconnect();\n }\n });\n\n observer.observe(document.body, {\n childList: true,\n subtree: true,\n });\n });\n}\n\nexport function interpolateString(text: string, params: { [key: string]: string }) {\n if (text && params && Object.keys(params).length > 0) {\n let result = text;\n Object.keys(params).forEach((key) => {\n const pattern = new RegExp(`\\{\\{${key}\\}\\}`, 'g');\n result = result.replace(pattern, params[key]);\n });\n return result;\n }\n return text;\n}\n","// more info here https://github.com/grafana/grafana-com/blob/main/docs/subscriptions.md\nimport { CONTRACT_TYPE_NAMES } from '../consts/planNames';\nimport { Tiers } from '../types/Tiers';\nimport { CloudOrgData } from 'feature/common/types/CloudOrgData';\nimport { SubscriptionCodeType } from 'feature/common/types/Subscriptions';\nimport { MarketplaceSubscriptionDetails } from 'feature/common/types/MarketplaceSubscriptionDetails';\n\n// Notifications\nconst ONE_DAY = 1000 * 60 * 60 * 24;\n\nconst getOrgPlanFromMarketplace = (\n result: CloudOrgData | undefined,\n marketplaceSubscription?: MarketplaceSubscriptionDetails\n): Tiers | undefined => {\n let tiers;\n if (!!result && !!marketplaceSubscription?.activeSubscription) {\n const subscribed = isSubscribed(result);\n const free = isFree(result);\n\n switch (marketplaceSubscription.details.provider) {\n case 'gcp':\n if (subscribed) {\n tiers = Tiers.GCPPro;\n } else if (free) {\n tiers = Tiers.GCPPending;\n }\n break;\n\n case 'azure':\n if (subscribed) {\n tiers = Tiers.AzurePro;\n } else if (free) {\n tiers = Tiers.AzurePending;\n }\n break;\n\n case 'aws':\n if (subscribed) {\n tiers = Tiers.AwsPro;\n } else if (free) {\n tiers = Tiers.AwsPending;\n }\n break;\n }\n }\n return tiers;\n};\n\nexport const getOrgPlan = (result?: CloudOrgData, marketplaceSubscription?: MarketplaceSubscriptionDetails): Tiers => {\n if (!result?.subscriptions || Object.keys(result.subscriptions).length === 0) {\n return Tiers.Disabled;\n }\n\n let tiers = getOrgPlanFromMarketplace(result, marketplaceSubscription);\n if (!tiers) {\n if (isSubscribed(result) || isPendingDowngrade(result)) {\n return Tiers.Pro;\n }\n if (isFree(result)) {\n return Tiers.Free;\n }\n if (isTrial(result)) {\n return Tiers.Trial;\n }\n if (isPendingCancellation(result)) {\n return Tiers.PendingCancellation;\n }\n if (isTrialUpgraded(result)) {\n return Tiers.TrialUpgraded;\n }\n return Tiers.Free;\n }\n return tiers;\n};\n\nexport const getContract = (result: CloudOrgData | undefined): CONTRACT_TYPE_NAMES => {\n return result?.contractType;\n};\n\nexport const getTrialEndDate = (result: CloudOrgData | undefined): string => {\n return result?.subscriptions.current.endDate ?? '';\n};\n\nexport const getTrialLength = (result: CloudOrgData | undefined): number | undefined => {\n if (!!result?.subscriptions?.current.endDate) {\n const now = new Date();\n const differenceMs = Math.abs(now.getTime() - new Date(result.subscriptions.current.endDate).getTime());\n return Math.round(differenceMs / ONE_DAY);\n }\n return undefined;\n};\n\nexport const isTrial = (orgData: CloudOrgData | undefined): boolean => {\n if (!!orgData) {\n const current: SubscriptionCodeType = orgData.subscriptions.current.product;\n const trial: boolean = orgData.subscriptions.current.isTrial;\n const next: SubscriptionCodeType | undefined = orgData.subscriptions.next?.product;\n\n return (\n (current === SubscriptionCodeType.FREE || current === SubscriptionCodeType.PRO) &&\n trial &&\n next === SubscriptionCodeType.FREE\n );\n }\n return false;\n};\n\nexport const isFree = (orgData: CloudOrgData | undefined) => {\n if (!!orgData) {\n return (\n !orgData.subscriptions.current.isTrial && orgData.subscriptions.current.product === SubscriptionCodeType.FREE\n );\n }\n return true;\n};\n\nconst isSubscribed = (orgData: CloudOrgData | undefined) => {\n if (!!orgData) {\n const current: SubscriptionCodeType = orgData.subscriptions.current.product;\n const trial: boolean = orgData.subscriptions.current.isTrial;\n const endDate = orgData.subscriptions.current.endDate;\n\n // also for Sales Led Trials we should return subscribed\n return (\n (current === SubscriptionCodeType.PRO && !trial && !endDate) ||\n (current === SubscriptionCodeType.SS_ADVANCED && !endDate) ||\n current === SubscriptionCodeType.ADVANCED\n );\n }\n return false;\n};\n\nconst isPendingCancellation = (orgData: CloudOrgData | undefined) => {\n if (!!orgData) {\n const current: SubscriptionCodeType = orgData.subscriptions.current.product;\n const endDate = orgData.subscriptions.current.endDate;\n const next: SubscriptionCodeType | undefined = orgData.subscriptions.next?.product;\n\n return (\n (current === SubscriptionCodeType.PRO || current === SubscriptionCodeType.SS_ADVANCED) &&\n !!endDate &&\n next === SubscriptionCodeType.FREE\n );\n }\n return false;\n};\n\nconst isTrialUpgraded = (orgData: CloudOrgData | undefined) => {\n if (!!orgData) {\n const current: SubscriptionCodeType = orgData.subscriptions.current.product;\n const trial: boolean = orgData.subscriptions.current.isTrial;\n const next: SubscriptionCodeType | undefined = orgData.subscriptions.next?.product;\n\n return current === SubscriptionCodeType.FREE && trial && next === SubscriptionCodeType.PRO;\n }\n return false;\n};\n\nconst isPendingDowngrade = (orgData: CloudOrgData | undefined) => {\n if (!!orgData) {\n const current: SubscriptionCodeType = orgData.subscriptions.current.product;\n const endDate = orgData.subscriptions.current.endDate;\n const next: SubscriptionCodeType | undefined = orgData.subscriptions.next?.product;\n\n return current === SubscriptionCodeType.SS_ADVANCED && !!endDate && next === SubscriptionCodeType.PRO;\n }\n return false;\n};\n","export const getGreetingBasedOnTime = () => {\n let time = new Date();\n\n let hours = time.getHours();\n\n if (hours >= 5 && hours <= 11) {\n return 'Good morning.';\n } else if (hours >= 12 && hours <= 17) {\n return 'Good afternoon.';\n } else {\n return 'Good evening.';\n }\n};\n\nexport const getGrafanaDomain = () => {\n const host = window.location.hostname;\n if (host.endsWith('.grafana-dev.net')) {\n return 'https://grafana-dev.com';\n }\n if (host.endsWith('.grafana-ops.net')) {\n return 'https://grafana-ops.com';\n }\n return 'https://grafana.com';\n};\n\nexport const getActiveUsersLink = (areMoreUsers: boolean, orgSlug = ''): string => {\n if (areMoreUsers) {\n return getMembersLink(orgSlug);\n } else {\n return getSubscriptionLink(orgSlug);\n }\n};\n\nexport const getMembersLink = (orgSlug = '') => {\n const domain = getGrafanaDomain();\n return !!orgSlug ? `${domain}/orgs/${orgSlug}/members` : `${domain}/profile/org/members`;\n};\n\nexport const getSubscriptionLink = (orgSlug = '') => {\n const domain = getGrafanaDomain();\n return !!orgSlug ? `${domain}/orgs/${orgSlug}/subscription` : `${domain}/profile/org/subscription`;\n};\n","import { SubscriptionCodeType } from 'feature/common/types/Subscriptions';\n\nexport const ENTERPRISE_INSTANCE = {\n id: 660254,\n orgId: 276038,\n orgSlug: 'sedemo',\n orgName: 'SE Demo',\n type: 'grafana',\n name: 'devsedemo.grafana.net',\n url: 'https://devsedemo.grafana.net',\n slug: 'devsedemo',\n version: 'instant',\n description: '',\n status: 'active',\n gateway: 'istio',\n createdAt: '2023-06-05T09:14:33.000Z',\n createdBy: 'aengusrooneygrafana',\n updatedAt: '2023-09-18T14:40:23.000Z',\n updatedBy: 'hg-instance-status-sync',\n trial: 0,\n trialExpiresAt: null,\n clusterId: 81,\n clusterSlug: 'prod-us-east-0',\n clusterName: 'prod-us-east-0',\n plan: 'gcloud',\n planName: 'Grafana Cloud',\n billingStartDate: '2023-06-05T09:14:33.000Z',\n billingEndDate: null,\n billingActiveUsers: 0,\n billingGrafanaActiveUsers: 0,\n billingOnCallActiveUsers: 0,\n currentActiveUsers: 0,\n currentActiveAdminUsers: 0,\n currentActiveEditorUsers: 0,\n currentActiveViewerUsers: 0,\n dailyUserCnt: 0,\n dailyAdminCnt: 0,\n dailyEditorCnt: 0,\n dailyViewerCnt: 0,\n dashboardCnt: 21,\n datasourceCnts: {},\n userQuota: 10,\n dashboardQuota: -1,\n alertQuota: -1,\n alertCnt: 0,\n ssl: true,\n customAuth: true,\n customDomain: true,\n support: true,\n runningVersion:\n '10.4.0-65230 (commit: 0d1462cbbbe1e4712170d946818c2299bbb0e8b1, branch: HEAD, enterprise-commit: 844a09c99820f17617435007beca54fb2ffeb912)',\n machineLearning: 0,\n incident: 0,\n k6OrgId: 3311310,\n hmInstancePromId: 1021387,\n hmInstancePromUrl: 'https://prometheus-prod-13-prod-us-east-0.grafana.net',\n hmInstancePromName: 'devsedemo-prom',\n hmInstancePromStatus: 'active',\n hmInstancePromCurrentUsage: 2,\n hmInstancePromCurrentActiveSeries: 2,\n hmInstancePromClusterId: 117,\n hmInstanceGraphiteId: 1021388,\n hmInstanceGraphiteUrl: 'https://graphite-prod-13-prod-us-east-0.grafana.net',\n hmInstanceGraphiteName: 'devsedemo-graphite',\n hmInstanceGraphiteType: 'graphite-v5',\n hmInstanceGraphiteStatus: 'active',\n hmInstanceGraphiteCurrentUsage: 0,\n hlInstanceId: 613299,\n hlInstanceUrl: 'https://logs-prod-006.grafana.net',\n hlInstanceName: 'devsedemo-logs',\n hlInstanceStatus: 'active',\n hlInstanceCurrentUsage: 0,\n hlInstanceClusterId: 124,\n amInstanceId: 508643,\n amInstanceName: 'devsedemo-alerts',\n amInstanceUrl: 'https://alertmanager-prod-us-east-0.grafana.net',\n amInstanceStatus: 'active',\n amInstanceGeneratorUrl: 'https://devsedemo.grafana.net',\n amInstanceGeneratorUrlDatasource: '',\n htInstanceId: 609811,\n htInstanceUrl: 'https://tempo-prod-04-prod-us-east-0.grafana.net',\n htInstanceName: 'devsedemo-traces',\n htInstanceStatus: 'active',\n htInstanceClusterId: 128,\n hpInstanceId: 660254,\n hpInstanceUrl: 'https://profiles-prod-001.grafana.net',\n hpInstanceName: 'devsedemo-profiles',\n hpInstanceStatus: 'active',\n agentManagementInstanceId: 0,\n agentManagementInstanceUrl: '',\n agentManagementInstanceName: '',\n agentManagementInstanceStatus: 'unknown',\n regionId: 9,\n regionSlug: 'prod-us-east-0',\n regionPublicName: 'US East',\n provider: 'aws',\n providerRegion: 'us-east-2',\n links: [\n {\n rel: 'self',\n href: '/instances/devsedemo',\n },\n {\n rel: 'private-connectivity-info',\n href: '/instances/devsedemo/private-connectivity-info',\n },\n {\n rel: 'org',\n href: '/orgs/sedemo',\n },\n {\n rel: 'plugins',\n href: '/instances/devsedemo/plugins',\n },\n ],\n};\n\nexport const PRO_INSTANCE = {\n id: 399906,\n orgId: 677328,\n orgSlug: 'yahimaperez',\n orgName: 'yahimaperez',\n type: 'grafana',\n name: 'yahimaperez.grafana.net',\n url: 'https://yahimaperez.grafana.net',\n slug: 'yahimaperez',\n version: 'stable',\n description: '',\n status: 'active',\n gateway: 'istio',\n createdAt: '2022-07-13T12:07:24.000Z',\n createdBy: 'yahimaperez',\n updatedAt: '2023-06-09T22:04:29.000Z',\n updatedBy: 'raintank',\n trial: 0,\n trialExpiresAt: null,\n clusterId: 66,\n clusterSlug: 'prod-eu-west-0',\n clusterName: 'prod-eu-west-0',\n plan: 'gcloud',\n planName: 'Grafana Cloud',\n billingStartDate: '2022-07-13T12:07:23.000Z',\n billingEndDate: null,\n billingActiveUsers: 0,\n billingGrafanaActiveUsers: 0,\n billingOnCallActiveUsers: 0,\n currentActiveUsers: 0,\n currentActiveAdminUsers: 0,\n currentActiveEditorUsers: 0,\n currentActiveViewerUsers: 0,\n dailyUserCnt: 0,\n dailyAdminCnt: 0,\n dailyEditorCnt: 0,\n dailyViewerCnt: 0,\n dashboardCnt: 22,\n datasourceCnts: {\n graphite: 1,\n influxdb: 1,\n mysql: 1,\n },\n userQuota: 10,\n dashboardQuota: -1,\n alertQuota: -1,\n alertCnt: 0,\n ssl: true,\n customAuth: true,\n customDomain: true,\n support: true,\n runningVersion: '10.0.3-cloud.4.aed62623 (commit: d9eea1cb64, branch: HEAD)',\n machineLearning: 0,\n incident: 0,\n k6OrgId: null,\n hmInstancePromId: 500486,\n hmInstancePromUrl: 'https://prometheus-prod-01-eu-west-0.grafana.net',\n hmInstancePromName: 'yahimaperez-prom',\n hmInstancePromStatus: 'active',\n hmInstancePromCurrentUsage: 40,\n hmInstancePromCurrentActiveSeries: 40,\n hmInstanceGraphiteId: 500487,\n hmInstanceGraphiteUrl: 'https://graphite-prod-01-eu-west-0.grafana.net',\n hmInstanceGraphiteName: 'yahimaperez-graphite',\n hmInstanceGraphiteType: 'graphite-v5',\n hmInstanceGraphiteStatus: 'active',\n hmInstanceGraphiteCurrentUsage: 0,\n hlInstanceId: 249213,\n hlInstanceUrl: 'https://logs-prod-eu-west-0.grafana.net',\n hlInstanceName: 'yahimaperez-logs',\n hlInstanceStatus: 'active',\n hlInstanceCurrentUsage: 0,\n amInstanceId: 248197,\n amInstanceName: 'yahimaperez-alerts',\n amInstanceUrl: 'https://alertmanager-eu-west-0.grafana.net',\n amInstanceStatus: 'active',\n amInstanceGeneratorUrl: 'https://yahimaperez.grafana.net',\n amInstanceGeneratorUrlDatasource: '',\n htInstanceId: 245725,\n htInstanceUrl: 'https://tempo-eu-west-0.grafana.net',\n htInstanceName: 'yahimaperez-traces',\n htInstanceStatus: 'active',\n hpInstanceId: 399906,\n hpInstanceUrl: 'https://profiles-prod-010.grafana.net',\n hpInstanceName: 'yahimaperez-profiles',\n hpInstanceStatus: 'active',\n regionId: 3,\n regionSlug: 'eu',\n links: [\n {\n rel: 'self',\n href: '/instances/yahimaperez',\n },\n {\n rel: 'org',\n href: '/orgs/yahimaperez',\n },\n {\n rel: 'plugins',\n href: '/instances/yahimaperez/plugins',\n },\n ],\n};\n\nexport const FREE_INSTANCE = {\n id: 404365,\n orgId: 682339,\n orgSlug: 'layahi',\n orgName: 'layahi',\n type: 'grafana',\n name: 'layahi.grafana.net',\n url: 'https://layahi.grafana.net',\n slug: 'layahi',\n version: 'beta',\n description: '',\n status: 'active',\n gateway: 'istio',\n createdAt: '2022-07-21T11:54:26.000Z',\n createdBy: 'layahi',\n updatedAt: '2023-06-09T21:42:52.000Z',\n updatedBy: 'raintank',\n trial: 0,\n trialExpiresAt: '2022-08-04T11:54:24.000Z',\n clusterId: 66,\n clusterSlug: 'prod-eu-west-0',\n clusterName: 'prod-eu-west-0',\n plan: 'free',\n planName: 'Free',\n billingStartDate: '2022-08-04T11:54:24.000Z',\n billingEndDate: null,\n billingActiveUsers: 1,\n billingGrafanaActiveUsers: 1,\n billingOnCallActiveUsers: 0,\n currentActiveUsers: 1,\n currentActiveAdminUsers: 1,\n currentActiveEditorUsers: 0,\n currentActiveViewerUsers: 0,\n dailyUserCnt: 1,\n dailyAdminCnt: 1,\n dailyEditorCnt: 0,\n dailyViewerCnt: 0,\n dashboardCnt: 11,\n datasourceCnts: {\n postgres: 1,\n },\n userQuota: 3,\n dashboardQuota: 10,\n alertQuota: -1,\n alertCnt: 0,\n ssl: true,\n customAuth: false,\n customDomain: false,\n support: false,\n runningVersion: '10.0.3-cloud.4.aed62623 (commit: d9eea1cb64, branch: HEAD)',\n machineLearning: 0,\n incident: 0,\n k6OrgId: null,\n hmInstancePromId: 509460,\n hmInstancePromUrl: 'https://prometheus-prod-01-eu-west-0.grafana.net',\n hmInstancePromName: 'layahi-prom',\n hmInstancePromStatus: 'active',\n hmInstancePromCurrentUsage: 0,\n hmInstancePromCurrentActiveSeries: 0,\n hmInstanceGraphiteId: 509461,\n hmInstanceGraphiteUrl: 'https://graphite-prod-01-eu-west-0.grafana.net',\n hmInstanceGraphiteName: 'layahi-graphite',\n hmInstanceGraphiteType: 'graphite-v5',\n hmInstanceGraphiteStatus: 'active',\n hmInstanceGraphiteCurrentUsage: 0,\n hlInstanceId: 253700,\n hlInstanceUrl: 'https://logs-prod-eu-west-0.grafana.net',\n hlInstanceName: 'layahi-logs',\n hlInstanceStatus: 'active',\n hlInstanceCurrentUsage: 0,\n amInstanceId: 252684,\n amInstanceName: 'layahi-alerts',\n amInstanceUrl: 'https://alertmanager-eu-west-0.grafana.net',\n amInstanceStatus: 'active',\n amInstanceGeneratorUrl: 'https://layahi.grafana.net',\n amInstanceGeneratorUrlDatasource: '',\n htInstanceId: 250214,\n htInstanceUrl: 'https://tempo-eu-west-0.grafana.net',\n htInstanceName: 'layahi-traces',\n htInstanceStatus: 'active',\n hpInstanceId: 404365,\n hpInstanceUrl: 'https://profiles-prod-010.grafana.net',\n hpInstanceName: 'layahi-profiles',\n hpInstanceStatus: 'active',\n regionId: 3,\n regionSlug: 'eu',\n links: [\n {\n rel: 'self',\n href: '/instances/layahi',\n },\n {\n rel: 'org',\n href: '/orgs/layahi',\n },\n {\n rel: 'plugins',\n href: '/instances/layahi/plugins',\n },\n ],\n};\n\nconst result = new Date();\nresult.setDate(result.getDate() + 10);\n\nexport const TRIAL_INSTANCE = {\n id: 827568,\n orgId: 1025948,\n orgSlug: 'growthtrialhome',\n orgName: 'growthtrialhome',\n type: 'grafana',\n name: 'growthtrialhome.grafana.net',\n url: 'https://growthtrialhome.grafana.net',\n slug: 'growthtrialhome',\n version: 'steady',\n description: '',\n status: 'active',\n gateway: 'istio',\n createdAt: '2024-01-09T09:38:39.000Z',\n createdBy: 'yahimaperez29',\n updatedAt: '2024-01-11T14:50:18.000Z',\n updatedBy: 'hg-instance-status-sync',\n trial: 1,\n trialExpiresAt: '2024-01-23T09:38:30.000Z',\n clusterId: 81,\n clusterSlug: 'prod-us-east-0',\n clusterName: 'prod-us-east-0',\n plan: 'free-trial',\n planName: 'Free Trial',\n billingStartDate: '2024-01-09T09:38:39.000Z',\n billingEndDate: null,\n billingActiveUsers: 2,\n billingGrafanaActiveUsers: 2,\n billingOnCallActiveUsers: 0,\n currentActiveUsers: 2,\n currentActiveAdminUsers: 1,\n currentActiveEditorUsers: 0,\n currentActiveViewerUsers: 1,\n dailyUserCnt: 1,\n dailyAdminCnt: 0,\n dailyEditorCnt: 0,\n dailyViewerCnt: 1,\n dashboardCnt: 10,\n datasourceCnts: {},\n userQuota: 3,\n dashboardQuota: -1,\n alertQuota: -1,\n alertCnt: 0,\n ssl: true,\n customAuth: true,\n customDomain: true,\n support: true,\n runningVersion:\n '10.4.0-65039 (commit: da894994d42ee2bde00f2366fe6d30ad00b0e907, branch: HEAD, enterprise-commit: 650bb190e01e93c323952920a45064d56e493dc6)',\n machineLearning: 0,\n incident: 0,\n k6OrgId: null,\n hmInstancePromId: 1364733,\n hmInstancePromUrl: 'https://prometheus-prod-13-prod-us-east-0.grafana.net',\n hmInstancePromName: 'growthtrialhome-prom',\n hmInstancePromStatus: 'active',\n hmInstancePromCurrentUsage: 0,\n hmInstancePromCurrentActiveSeries: 0,\n hmInstancePromClusterId: 117,\n hmInstanceGraphiteId: 1364734,\n hmInstanceGraphiteUrl: 'https://graphite-prod-13-prod-us-east-0.grafana.net',\n hmInstanceGraphiteName: 'growthtrialhome-graphite',\n hmInstanceGraphiteType: 'graphite-v5',\n hmInstanceGraphiteStatus: 'active',\n hmInstanceGraphiteCurrentUsage: 0,\n hlInstanceId: 781391,\n hlInstanceUrl: 'https://logs-prod-006.grafana.net',\n hlInstanceName: 'growthtrialhome-logs',\n hlInstanceStatus: 'active',\n hlInstanceCurrentUsage: 0,\n hlInstanceClusterId: 124,\n amInstanceId: 680313,\n amInstanceName: 'growthtrialhome-alerts',\n amInstanceUrl: 'https://alertmanager-prod-us-east-0.grafana.net',\n amInstanceStatus: 'active',\n amInstanceGeneratorUrl: 'https://growthtrialhome.grafana.net',\n amInstanceGeneratorUrlDatasource: '',\n htInstanceId: 779667,\n htInstanceUrl: 'https://tempo-prod-04-prod-us-east-0.grafana.net',\n htInstanceName: 'growthtrialhome-traces',\n htInstanceStatus: 'active',\n htInstanceClusterId: 128,\n hpInstanceId: 827568,\n hpInstanceUrl: 'https://profiles-prod-001.grafana.net',\n hpInstanceName: 'growthtrialhome-profiles',\n hpInstanceStatus: 'active',\n agentManagementInstanceId: 0,\n agentManagementInstanceUrl: '',\n agentManagementInstanceName: '',\n agentManagementInstanceStatus: 'unknown',\n regionId: 9,\n regionSlug: 'prod-us-east-0',\n regionPublicName: 'US East',\n provider: 'aws',\n providerRegion: 'us-east-2',\n links: [\n {\n rel: 'self',\n href: '/instances/growthtrialhome',\n },\n {\n rel: 'private-connectivity-info',\n href: '/instances/growthtrialhome/private-connectivity-info',\n },\n {\n rel: 'org',\n href: '/orgs/growthtrialhome',\n },\n {\n rel: 'plugins',\n href: '/instances/growthtrialhome/plugins',\n },\n ],\n};\n\nexport const ADVANCED_INSTANCE = {\n id: 288726,\n orgId: 576536,\n orgSlug: 'cloudadminteam',\n orgName: 'Cloud Admin Team',\n type: 'grafana',\n name: 'cloudadminteam.grafana.net',\n url: 'https://cloudadminteam.grafana.net',\n slug: 'cloudadminteam',\n version: 'stable',\n description: '',\n status: 'active',\n gateway: 'istio',\n createdAt: '2021-12-13T12:53:39.000Z',\n createdBy: 'raintank',\n updatedAt: '2023-06-07T23:48:28.000Z',\n updatedBy: 'raintank',\n trial: 0,\n trialExpiresAt: null,\n clusterId: 69,\n clusterSlug: 'prod-us-central-0',\n clusterName: 'prod-us-central-0',\n plan: 'advanced',\n planName: 'Grafana Cloud Advanced',\n billingStartDate: '2021-12-13T12:53:38.000Z',\n billingEndDate: null,\n billingActiveUsers: 0,\n billingGrafanaActiveUsers: 0,\n billingOnCallActiveUsers: 0,\n currentActiveUsers: 0,\n currentActiveAdminUsers: 0,\n currentActiveEditorUsers: 0,\n currentActiveViewerUsers: 0,\n dailyUserCnt: 0,\n dailyAdminCnt: 0,\n dailyEditorCnt: 0,\n dailyViewerCnt: 0,\n dashboardCnt: 54,\n datasourceCnts: {\n cloudwatch: 5,\n elasticsearch: 1,\n 'fetzerch-sunandmoon-datasource': 1,\n graphite: 9,\n influxdb: 36,\n mysql: 5,\n postgres: 16,\n stackdriver: 1,\n 'synthetic-monitoring-datasource': 1,\n },\n userQuota: 10,\n dashboardQuota: -1,\n alertQuota: -1,\n alertCnt: 0,\n ssl: true,\n customAuth: true,\n customDomain: true,\n support: true,\n runningVersion: '10.0.3-cloud.4.aed62623 (commit: d9eea1cb64, branch: HEAD)',\n machineLearning: 0,\n incident: 0,\n k6OrgId: null,\n hmInstancePromId: 277348,\n hmInstancePromUrl: 'https://prometheus-prod-10-prod-us-central-0.grafana.net',\n hmInstancePromName: 'cloudadminteam-prom',\n hmInstancePromStatus: 'active',\n hmInstancePromCurrentUsage: 0,\n hmInstancePromCurrentActiveSeries: 0,\n hmInstanceGraphiteId: 277349,\n hmInstanceGraphiteUrl: 'https://graphite-prod-10-prod-us-central-0.grafana.net',\n hmInstanceGraphiteName: 'cloudadminteam-graphite',\n hmInstanceGraphiteType: 'graphite-v5',\n hmInstanceGraphiteStatus: 'active',\n hmInstanceGraphiteCurrentUsage: 0,\n hlInstanceId: 137645,\n hlInstanceUrl: 'https://logs-prod-us-central1.grafana.net',\n hlInstanceName: 'cloudadminteam-logs',\n hlInstanceStatus: 'active',\n hlInstanceCurrentUsage: 0,\n amInstanceId: 136630,\n amInstanceName: 'cloudadminteam-alerts',\n amInstanceUrl: 'https://alertmanager-us-central1.grafana.net',\n amInstanceStatus: 'active',\n amInstanceGeneratorUrl: 'https://cloudadminteam.grafana.net',\n amInstanceGeneratorUrlDatasource: '',\n htInstanceId: 134155,\n htInstanceUrl: 'https://tempo-us-central1.grafana.net',\n htInstanceName: 'cloudadminteam-traces',\n htInstanceStatus: 'active',\n hpInstanceId: 288726,\n hpInstanceUrl: 'https://profiles-prod-003.grafana.net',\n hpInstanceName: 'cloudadminteam-profiles',\n hpInstanceStatus: 'active',\n regionId: 1,\n regionSlug: 'us',\n links: [\n {\n rel: 'self',\n href: '/instances/cloudadminteam',\n },\n {\n rel: 'org',\n href: '/orgs/cloudadminteam',\n },\n {\n rel: 'plugins',\n href: '/instances/cloudadminteam/plugins',\n },\n ],\n};\n\nexport const TRIAL_SUBSCRIPTION = {\n id: 1025948,\n slug: 'growthtrialhome',\n name: 'growthtrialhome',\n url: '',\n createdAt: '2024-01-09T09:38:27.000Z',\n createdBy: 'yahimaperez29',\n updatedAt: '2024-01-09T09:38:41.000Z',\n updatedBy: '',\n avatar: 'default',\n links: [\n {\n rel: 'self',\n href: '/orgs/growthtrialhome',\n },\n {\n rel: 'api-keys',\n href: '/orgs/growthtrialhome/api-keys',\n },\n {\n rel: 'members',\n href: '/orgs/growthtrialhome/members',\n },\n ],\n checksPerMonth: 0,\n wpPlan: '',\n hgInstanceLimit: 1,\n hmInstanceLimit: 1,\n hlInstanceLimit: 1,\n userQuota: -1,\n supportPlan: '',\n creditApproved: 0,\n msaSignedAt: '2024-01-09T09:38:28.000Z',\n msaSignedBy: 'yahimaperez29',\n enterprisePlugins: 1,\n grafanaCloud: 4,\n privacy: 'private',\n reseller: '',\n resellerId: null,\n resellerName: null,\n emergencySupport: false,\n htUsage: 45.62079705006048,\n hlUsage: 45.88696982955,\n hlRetentionUsage: 0,\n hmUsage: 5035138,\n hmGraphiteUsage: 0,\n hgUsage: 0,\n geUsersUsage: 0,\n geInstancesUsage: 0,\n k6VuhUsage: 150,\n k6IPUsage: 0,\n irmUsage: 3,\n hpUsage: 45.115710545464914,\n feO11YUsage: 50,\n appO11YUsage: 1,\n hgGrafanaUsage: 2,\n hgIncludedUsers: 3,\n hgPluginUsersOverageRate: 0,\n hgPluginUsersIncludedUsage: null,\n hgOnCallUsage: 0,\n hmCurrentUsage: 0,\n hmIncludedSeries: 10000,\n hlIncludedUsage: 50,\n hlQueryToIngestRatio: 100,\n gcloudMonthlyCost: 0,\n awsCustomerId: '',\n awsMarketplaceSupport: 0,\n trialStartDate: '2024-01-09T09:38:30.000Z',\n trialEndDate: '2024-01-23T09:38:30.000Z',\n trialLengthDays: 14,\n trialNoticeDate: null,\n cancellationDate: null,\n retainedStackId: 0,\n allowGCloudTrial: 0,\n pluginSignatureType: 'private',\n contractType: 'self_serve',\n contractTypeId: 1,\n hgCurrentActiveUsers: 2,\n subscriptions: {\n current: {\n product: SubscriptionCodeType.FREE,\n isTrial: true,\n endDate: `${result}`,\n payload: {\n userId: 1373705,\n trialId: '6b4b1f97-87a4-4ce2-aa42-6002fd53ade2',\n username: 'yahimaperez29',\n },\n plan: 'trial-v2',\n publicName: 'Trial',\n enterprisePluginsAdded: false,\n },\n nextProduct: 'grafana-cloud-free',\n next: {\n product: SubscriptionCodeType.FREE,\n payload: {\n actionType: 'scheduled-downgrade',\n retainedStackId: null,\n cancellationDetails: {\n cancellationClientNotes: 'Trial subscription automatically downgraded',\n },\n },\n plan: 'free',\n publicName: 'Free',\n },\n },\n hmAverageDpm: 1,\n hmTier1Rate: 8,\n hmTier2Min: 0,\n hmTier2Rate: 0,\n hmTier3Min: 0,\n hmTier3Rate: 0,\n hlTier1Rate: 0.5,\n hlTier2Min: 0,\n hlTier2Rate: 0,\n hlTier3Min: 0,\n hlTier3Rate: 0,\n hgTier1Rate: 8,\n hgTier2Min: 0,\n hgTier2Rate: 0,\n hgTier3Min: 0,\n hgTier3Rate: 0,\n htIncludedUsage: 100,\n htTier1Rate: 0.5,\n htTier2Min: 0,\n htTier2Rate: 0,\n htTier3Min: 0,\n htTier3Rate: 0,\n hlRetentionIncludedUsage: 0,\n hlRetentionTier1Rate: 0,\n hlRetentionTier2Min: 0,\n hlRetentionTier2Rate: 0,\n hlRetentionTier3Min: 0,\n hlRetentionTier3Rate: 0,\n hmGraphiteIncludedUsage: 0,\n hmGraphiteTier1Rate: 0,\n hmGraphiteTier2Min: 0,\n hmGraphiteTier2Rate: 0,\n hmGraphiteTier3Min: 0,\n hmGraphiteTier3Rate: 0,\n geUsersIncludedUsage: 0,\n geUsersTier1Rate: 0,\n geUsersTier2Min: 0,\n geUsersTier2Rate: 0,\n geUsersTier3Min: 0,\n geUsersTier3Rate: 0,\n geInstancesIncludedUsage: 0,\n geInstancesTier1Rate: 0,\n geInstancesTier2Min: 0,\n geInstancesTier2Rate: 0,\n geInstancesTier3Min: 0,\n geInstancesTier3Rate: 0,\n k6VuhIncludedUsage: 1000,\n k6VuhTier1Rate: 0.15,\n k6VuhTier2Min: 0,\n k6VuhTier2Rate: 0,\n k6VuhTier3Min: 0,\n k6VuhTier3Rate: 0,\n k6VuhUnits: 1,\n k6IPIncludedUsage: 0,\n k6IPTier1Rate: 30,\n k6IPTier2Min: 0,\n k6IPTier2Rate: 0,\n k6IPTier3Min: 0,\n k6IPTier3Rate: 0,\n irmStatus: 1,\n irmIncludedUsage: 3,\n irmTier1Rate: 20,\n irmTier2Min: 0,\n irmTier2Rate: 0,\n irmTier3Min: 0,\n irmTier3Rate: 0,\n hpIncludedUsage: 100,\n hpTier1Rate: 0.5,\n hpTier2Min: 0,\n hpTier2Rate: 0,\n hpTier3Min: 0,\n hpTier3Rate: 0,\n feO11YIncludedUsage: 50000,\n feO11YTier1Rate: 0,\n feO11YTier2Min: 0,\n feO11YTier2Rate: 0,\n feO11YTier3Min: 0,\n feO11YTier3Rate: 0,\n feO11YUnits: 1000,\n appO11YIncludedUsage: 2232,\n appO11YTier1Rate: 0,\n appO11YTier2Min: 0,\n appO11YTier2Rate: 0,\n appO11YTier3Min: 0,\n appO11YTier3Rate: 0,\n appO11YUnits: 1,\n smUsage: 101000,\n smIncludedUsage: 100000,\n smTier1Rate: 0,\n smTier2Min: 0,\n smTier2Rate: 0,\n smTier3Min: 0,\n smTier3Rate: 0,\n smUnits: 10000,\n};\n\nexport const ADVANCED_SUBSCRIPTION = {\n id: 576536,\n slug: 'cloudadminteam',\n name: 'Cloud Admin Team',\n url: '',\n createdAt: '2021-12-13T12:48:39.000Z',\n createdBy: '',\n updatedAt: '2023-07-21T15:28:17.000Z',\n updatedBy: '',\n avatar: 'default',\n links: [\n {\n rel: 'self',\n href: '/orgs/cloudadminteam',\n },\n {\n rel: 'api-keys',\n href: '/orgs/cloudadminteam/api-keys',\n },\n {\n rel: 'members',\n href: '/orgs/cloudadminteam/members',\n },\n ],\n checksPerMonth: 0,\n wpPlan: '',\n hgInstanceLimit: 3,\n hmInstanceLimit: 0,\n hlInstanceLimit: 0,\n userQuota: -1,\n supportPlan: '',\n creditApproved: 0,\n msaSignedAt: null,\n msaSignedBy: null,\n enterprisePlugins: 0,\n grafanaCloud: 1,\n privacy: 'private',\n reseller: '',\n emergencySupport: true,\n htUsage: 0,\n hlUsage: 0,\n hlRetentionUsage: 0,\n hmUsage: 0,\n hmGraphiteUsage: 0,\n hgUsage: 0,\n geUsersUsage: 0,\n geInstancesUsage: 0,\n k6VuhUsage: 0,\n irmUsage: 0,\n hpUsage: 0,\n hgGrafanaUsage: 0,\n hgIncludedUsers: 0,\n hgOnCallUsage: 0,\n hmCurrentUsage: 5,\n hmIncludedSeries: 0,\n hlIncludedUsage: 0,\n hlQueryToIngestRatio: 0,\n gcloudMonthlyCost: 0,\n awsCustomerId: '',\n awsMarketplaceSupport: 0,\n trialStartDate: null,\n trialEndDate: null,\n trialLengthDays: 0,\n trialNoticeDate: null,\n cancellationDate: null,\n retainedStackId: 0,\n allowGCloudTrial: 1,\n pluginSignatureType: 'private',\n contractType: 'contracted',\n contractTypeId: 2,\n hgCurrentActiveUsers: 0,\n subscriptions: {\n current: {\n product: SubscriptionCodeType.ADVANCED,\n isTrial: false,\n endDate: null,\n payload: {},\n plan: 'advanced',\n publicName: 'Advanced',\n },\n nextProduct: null,\n next: null,\n },\n hmAverageDpm: 0,\n hmTier1Rate: 0,\n hmTier2Min: 0,\n hmTier2Rate: 0,\n hmTier3Min: 0,\n hmTier3Rate: 0,\n hlTier1Rate: 0,\n hlTier2Min: 0,\n hlTier2Rate: 0,\n hlTier3Min: 0,\n hlTier3Rate: 0,\n hgTier1Rate: 0,\n hgTier2Min: 0,\n hgTier2Rate: 0,\n hgTier3Min: 0,\n hgTier3Rate: 0,\n htIncludedUsage: 0,\n htTier1Rate: 0,\n htTier2Min: 0,\n htTier2Rate: 0,\n htTier3Min: 0,\n htTier3Rate: 0,\n hlRetentionIncludedUsage: 0,\n hlRetentionTier1Rate: 0,\n hlRetentionTier2Min: 0,\n hlRetentionTier2Rate: 0,\n hlRetentionTier3Min: 0,\n hlRetentionTier3Rate: 0,\n hmGraphiteIncludedUsage: 0,\n hmGraphiteTier1Rate: 0,\n hmGraphiteTier2Min: 0,\n hmGraphiteTier2Rate: 0,\n hmGraphiteTier3Min: 0,\n hmGraphiteTier3Rate: 0,\n geUsersIncludedUsage: 0,\n geUsersTier1Rate: 0,\n geUsersTier2Min: 0,\n geUsersTier2Rate: 0,\n geUsersTier3Min: 0,\n geUsersTier3Rate: 0,\n geInstancesIncludedUsage: 0,\n geInstancesTier1Rate: 0,\n geInstancesTier2Min: 0,\n geInstancesTier2Rate: 0,\n geInstancesTier3Min: 0,\n geInstancesTier3Rate: 0,\n k6VuhIncludedUsage: 0,\n k6VuhTier1Rate: 0,\n k6VuhTier2Min: 0,\n k6VuhTier2Rate: 0,\n k6VuhTier3Min: 0,\n k6VuhTier3Rate: 0,\n k6VuhUnits: 100,\n irmStatus: 2,\n irmIncludedUsage: 0,\n irmTier1Rate: 0,\n irmTier2Min: 0,\n irmTier2Rate: 0,\n irmTier3Min: 0,\n irmTier3Rate: 0,\n hpIncludedUsage: 0,\n hpTier1Rate: 0.5,\n hpTier2Min: 0,\n hpTier2Rate: 0,\n hpTier3Min: 0,\n hpTier3Rate: 0,\n tags: ['staff'],\n accountManagerId: 0,\n accountManagerUsername: null,\n accountManagerName: null,\n accountOwnerId: 0,\n accountOwnerUsername: null,\n accountOwnerName: null,\n hmBillingStartDate: null,\n hmBillingEndDate: null,\n hmBilledToDate: null,\n hmOverageWarnDate: null,\n hmOverageAmount: 0,\n hmCurrentPrometheusUsage: 5,\n hmCurrentGraphiteUsage: 0,\n hlBillingStartDate: null,\n hlBillingEndDate: null,\n hlBilledToDate: null,\n hlOverageWarnDate: null,\n hlOverageAmount: 0,\n hlCurrentUsage: 0,\n hgBillingStartDate: null,\n hgBillingEndDate: null,\n hgBilledToDate: null,\n hgOverageWarnDate: null,\n hgOverageAmount: 0,\n hgActiveUsers: 0,\n hgDatasourceCnts: {\n cloudwatch: 5,\n elasticsearch: 1,\n 'fetzerch-sunandmoon-datasource': 1,\n graphite: 9,\n influxdb: 65,\n mysql: 5,\n postgres: 16,\n stackdriver: 1,\n 'synthetic-monitoring-datasource': 2,\n },\n hgIntegrationCnts: {\n 'apache-http': 1,\n 'apollo-server': 1,\n asterisk: 1,\n 'cloudwatch-logs': 1,\n github: 1,\n 'grafana-agent': 2,\n kubernetes: 1,\n 'linux-node': 2,\n 'macos-node': 1,\n mysql: 1,\n postgres: 1,\n 'raspberry-pi-node': 1,\n spark: 1,\n 'windows-exporter': 1,\n },\n htOverageWarnDate: null,\n htFirstUsageDate: null,\n htCurrentUsage: 0,\n htOverageAmount: 0,\n htBillingStartDate: null,\n htBillingEndDate: null,\n htBilledToDate: null,\n hlRetentionOverageWarnDate: null,\n hlRetentionFirstUsageDate: null,\n hlRetentionCurrentUsage: 0,\n hlRetentionOverageAmount: 0,\n hlRetentionBillingStartDate: null,\n hlRetentionBillingEndDate: null,\n hlRetentionBilledToDate: null,\n hmGraphiteOverageWarnDate: null,\n hmGraphiteFirstUsageDate: null,\n hmGraphiteCurrentUsage: 0,\n hmGraphiteOverageAmount: 0,\n hmGraphiteBillingStartDate: null,\n hmGraphiteBillingEndDate: null,\n hmGraphiteBilledToDate: null,\n geUsersOverageWarnDate: null,\n geUsersFirstUsageDate: null,\n geUsersCurrentUsage: 0,\n geUsersOverageAmount: 0,\n geUsersBillingStartDate: null,\n geUsersBillingEndDate: null,\n geUsersBilledToDate: null,\n geInstancesOverageWarnDate: null,\n geInstancesFirstUsageDate: null,\n geInstancesCurrentUsage: 0,\n geInstancesOverageAmount: 0,\n geInstancesBillingStartDate: null,\n geInstancesBillingEndDate: null,\n geInstancesBilledToDate: null,\n k6VuhOverageWarnDate: null,\n k6VuhFirstUsageDate: null,\n k6VuhCurrentUsage: 0,\n k6VuhOverageAmount: 0,\n k6VuhBillingStartDate: null,\n k6VuhBillingEndDate: null,\n k6VuhBilledToDate: null,\n irmOverageWarnDate: null,\n irmFirstUsageDate: null,\n irmCurrentUsage: 0,\n irmOverageAmount: 0,\n irmBillingStartDate: null,\n irmBillingEndDate: null,\n irmBilledToDate: null,\n hpOverageWarnDate: null,\n hpFirstUsageDate: null,\n hpCurrentUsage: 0,\n hpOverageAmount: 0,\n hpBillingStartDate: '2023-05-01T00:00:00.000Z',\n hpBillingEndDate: null,\n hpBilledToDate: null,\n totalOverageAmount: 0,\n memberCnt: 46,\n licenseCnt: 0,\n licenseConfiguredCnt: 0,\n licenseUnconfiguredCnt: 0,\n hmInstanceCnt: 4,\n hmGraphiteInstanceCnt: 2,\n hmPrometheusInstanceCnt: 2,\n hgInstanceCnt: 2,\n hlInstanceCnt: 2,\n htInstanceCnt: 2,\n ubersmithClientId: 0,\n intacctCustomerId: 0,\n intacctCustomerUrl: '',\n committedArr: 0,\n nacvCredit: 0,\n effectiveMrrHigh: 0,\n zendeskId: 1900083158473,\n salesforceAccountId: '',\n salesforceLeadId: '00Q1I00000IFkzlUAD',\n salesforceCustomOrgId: 'aAN8W0000013CZlWAM',\n slackSupport: 0,\n slackSupportChannel: '',\n happinessRating: null,\n happinessNote: null,\n happinessCreatedAt: null,\n happinessExpiredAt: null,\n happinessChangedAt: null,\n happinessUserName: null,\n cancellationClientNotes: null,\n cancellationNotes: null,\n cancellationReason: '',\n netPromoterScore: null,\n hmFirstOverageDate: null,\n hmFirstApproachingLimitDate: null,\n spendCommitCreditBalance: 0,\n spendCommitCreditTotal: 0,\n projectedOverageAmount: 0,\n estimatedArr: 0,\n referredBy: null,\n k6OrgId: null,\n};\n\nexport const PRO_SUBSCRIPTION = {\n id: 677328,\n slug: 'yahimaperez',\n name: 'yahimaperez',\n url: '',\n createdAt: '2022-07-11T11:44:13.000Z',\n createdBy: '',\n updatedAt: '2022-07-28T11:48:19.000Z',\n updatedBy: '',\n avatar: 'default',\n links: [\n {\n rel: 'self',\n href: '/orgs/yahimaperez',\n },\n {\n rel: 'api-keys',\n href: '/orgs/yahimaperez/api-keys',\n },\n {\n rel: 'members',\n href: '/orgs/yahimaperez/members',\n },\n ],\n checksPerMonth: 0,\n wpPlan: '',\n hgInstanceLimit: 10,\n hmInstanceLimit: 3,\n hlInstanceLimit: 3,\n userQuota: 10,\n supportPlan: '',\n creditApproved: 0,\n msaSignedAt: '2022-07-11T11:44:14.000Z',\n msaSignedBy: 'yahimaperez',\n enterprisePlugins: 0,\n grafanaCloud: 1,\n privacy: 'private',\n reseller: '',\n emergencySupport: false,\n htUsage: 0,\n hlUsage: 0,\n hlRetentionUsage: 0,\n hmUsage: 40,\n hmGraphiteUsage: 0,\n hgUsage: 1,\n geUsersUsage: 0,\n geInstancesUsage: 0,\n k6VuhUsage: 0,\n irmUsage: 0,\n hpUsage: 0,\n hgGrafanaUsage: 1,\n hgIncludedUsers: 2,\n hgOnCallUsage: 0,\n hmCurrentUsage: 40,\n hmIncludedSeries: 20000,\n hlIncludedUsage: 100,\n hlQueryToIngestRatio: 0,\n gcloudMonthlyCost: 0,\n awsCustomerId: '',\n awsMarketplaceSupport: 0,\n trialStartDate: null,\n trialEndDate: null,\n trialLengthDays: 0,\n trialNoticeDate: null,\n cancellationDate: null,\n retainedStackId: 0,\n allowGCloudTrial: 1,\n pluginSignatureType: 'private',\n contractType: 'none',\n contractTypeId: 0,\n hgCurrentActiveUsers: 1,\n subscriptions: {\n current: {\n product: SubscriptionCodeType.PRO,\n isTrial: false,\n endDate: null,\n payload: {},\n plan: 'pro',\n publicName: 'Pro',\n },\n nextProduct: null,\n next: null,\n },\n hmAverageDpm: 1,\n hmTier1Rate: 0,\n hmTier2Min: 0,\n hmTier2Rate: 0,\n hmTier3Min: 0,\n hmTier3Rate: 0,\n hlTier1Rate: 0,\n hlTier2Min: 0,\n hlTier2Rate: 0,\n hlTier3Min: 0,\n hlTier3Rate: 0,\n hgTier1Rate: 0,\n hgTier2Min: 0,\n hgTier2Rate: 0,\n hgTier3Min: 0,\n hgTier3Rate: 0,\n htIncludedUsage: 0,\n htTier1Rate: 0,\n htTier2Min: 0,\n htTier2Rate: 0,\n htTier3Min: 0,\n htTier3Rate: 0,\n hlRetentionIncludedUsage: 0,\n hlRetentionTier1Rate: 0,\n hlRetentionTier2Min: 0,\n hlRetentionTier2Rate: 0,\n hlRetentionTier3Min: 0,\n hlRetentionTier3Rate: 0,\n hmGraphiteIncludedUsage: 0,\n hmGraphiteTier1Rate: 0,\n hmGraphiteTier2Min: 0,\n hmGraphiteTier2Rate: 0,\n hmGraphiteTier3Min: 0,\n hmGraphiteTier3Rate: 0,\n geUsersIncludedUsage: 0,\n geUsersTier1Rate: 0,\n geUsersTier2Min: 0,\n geUsersTier2Rate: 0,\n geUsersTier3Min: 0,\n geUsersTier3Rate: 0,\n geInstancesIncludedUsage: 0,\n geInstancesTier1Rate: 0,\n geInstancesTier2Min: 0,\n geInstancesTier2Rate: 0,\n geInstancesTier3Min: 0,\n geInstancesTier3Rate: 0,\n k6VuhIncludedUsage: 0,\n k6VuhTier1Rate: 0,\n k6VuhTier2Min: 0,\n k6VuhTier2Rate: 0,\n k6VuhTier3Min: 0,\n k6VuhTier3Rate: 0,\n k6VuhUnits: 100,\n irmStatus: 1,\n irmIncludedUsage: 2,\n irmTier1Rate: 20,\n irmTier2Min: 0,\n irmTier2Rate: 0,\n irmTier3Min: 0,\n irmTier3Rate: 0,\n hpIncludedUsage: 100,\n hpTier1Rate: 0.5,\n hpTier2Min: 0,\n hpTier2Rate: 0,\n hpTier3Min: 0,\n hpTier3Rate: 0,\n tags: ['staff'],\n accountManagerId: 0,\n accountManagerUsername: null,\n accountManagerName: null,\n accountOwnerId: 0,\n accountOwnerUsername: null,\n accountOwnerName: null,\n hmBillingStartDate: '2022-07-11T11:44:14.000Z',\n hmBillingEndDate: null,\n hmBilledToDate: null,\n hmOverageWarnDate: null,\n hmOverageAmount: 0,\n hmCurrentPrometheusUsage: 40,\n hmCurrentGraphiteUsage: 0,\n hlBillingStartDate: '2022-07-11T11:44:14.000Z',\n hlBillingEndDate: null,\n hlBilledToDate: null,\n hlOverageWarnDate: null,\n hlOverageAmount: 0,\n hlCurrentUsage: 0,\n hgBillingStartDate: '2022-07-11T11:44:14.000Z',\n hgBillingEndDate: null,\n hgBilledToDate: null,\n hgOverageWarnDate: null,\n hgOverageAmount: 0,\n hgActiveUsers: 0,\n hgDatasourceCnts: {\n graphite: 1,\n influxdb: 1,\n mysql: 1,\n },\n hgIntegrationCnts: {\n 'grafana-agent': 1,\n 'macos-node': 1,\n mysql: 1,\n },\n htOverageWarnDate: null,\n htFirstUsageDate: null,\n htCurrentUsage: 0,\n htOverageAmount: 0,\n htBillingStartDate: '2022-07-11T11:44:14.000Z',\n htBillingEndDate: null,\n htBilledToDate: null,\n hlRetentionOverageWarnDate: null,\n hlRetentionFirstUsageDate: '2022-07-13T13:02:39.000Z',\n hlRetentionCurrentUsage: 0,\n hlRetentionOverageAmount: 0,\n hlRetentionBillingStartDate: null,\n hlRetentionBillingEndDate: null,\n hlRetentionBilledToDate: null,\n hmGraphiteOverageWarnDate: null,\n hmGraphiteFirstUsageDate: null,\n hmGraphiteCurrentUsage: 0,\n hmGraphiteOverageAmount: 0,\n hmGraphiteBillingStartDate: null,\n hmGraphiteBillingEndDate: null,\n hmGraphiteBilledToDate: null,\n geUsersOverageWarnDate: null,\n geUsersFirstUsageDate: null,\n geUsersCurrentUsage: 0,\n geUsersOverageAmount: 0,\n geUsersBillingStartDate: null,\n geUsersBillingEndDate: null,\n geUsersBilledToDate: null,\n geInstancesOverageWarnDate: null,\n geInstancesFirstUsageDate: null,\n geInstancesCurrentUsage: 0,\n geInstancesOverageAmount: 0,\n geInstancesBillingStartDate: null,\n geInstancesBillingEndDate: null,\n geInstancesBilledToDate: null,\n k6VuhOverageWarnDate: null,\n k6VuhFirstUsageDate: null,\n k6VuhCurrentUsage: 0,\n k6VuhOverageAmount: 0,\n k6VuhBillingStartDate: null,\n k6VuhBillingEndDate: null,\n k6VuhBilledToDate: null,\n irmOverageWarnDate: null,\n irmFirstUsageDate: null,\n irmCurrentUsage: 0,\n irmOverageAmount: 0,\n irmBillingStartDate: null,\n irmBillingEndDate: null,\n irmBilledToDate: null,\n hpOverageWarnDate: null,\n hpFirstUsageDate: null,\n hpCurrentUsage: 0,\n hpOverageAmount: 0,\n hpBillingStartDate: '2023-08-01T00:00:00.000Z',\n hpBillingEndDate: null,\n hpBilledToDate: null,\n totalOverageAmount: 0,\n memberCnt: 2,\n licenseCnt: 0,\n licenseConfiguredCnt: 0,\n licenseUnconfiguredCnt: 0,\n hmInstanceCnt: 2,\n hmGraphiteInstanceCnt: 1,\n hmPrometheusInstanceCnt: 1,\n hgInstanceCnt: 1,\n hlInstanceCnt: 1,\n htInstanceCnt: 1,\n ubersmithClientId: 0,\n intacctCustomerId: 0,\n intacctCustomerUrl: '',\n committedArr: 0,\n nacvCredit: 0,\n effectiveMrrHigh: 0,\n zendeskId: 5868755880861,\n salesforceAccountId: '',\n salesforceLeadId: '00Q8W00000ezsMTUAY',\n salesforceCustomOrgId: 'aAN8W0000013N8eWAE',\n slackSupport: 0,\n slackSupportChannel: '',\n happinessRating: null,\n happinessNote: null,\n happinessCreatedAt: null,\n happinessExpiredAt: null,\n happinessChangedAt: null,\n happinessUserName: null,\n cancellationClientNotes: null,\n cancellationNotes: null,\n cancellationReason: '',\n netPromoterScore: null,\n hmFirstOverageDate: null,\n hmFirstApproachingLimitDate: null,\n spendCommitCreditBalance: 0,\n spendCommitCreditTotal: 0,\n projectedOverageAmount: 0,\n estimatedArr: 0,\n referredBy: null,\n k6OrgId: null,\n};\n\nexport const SS_ADVANCED_SUBSCRIPTION = {\n id: 677328,\n slug: 'yahimaperez',\n name: 'yahimaperez',\n url: '',\n createdAt: '2022-07-11T11:44:13.000Z',\n createdBy: '',\n updatedAt: '2022-07-28T11:48:19.000Z',\n updatedBy: '',\n avatar: 'default',\n links: [\n {\n rel: 'self',\n href: '/orgs/yahimaperez',\n },\n {\n rel: 'api-keys',\n href: '/orgs/yahimaperez/api-keys',\n },\n {\n rel: 'members',\n href: '/orgs/yahimaperez/members',\n },\n ],\n checksPerMonth: 0,\n wpPlan: '',\n hgInstanceLimit: 10,\n hmInstanceLimit: 3,\n hlInstanceLimit: 3,\n userQuota: 10,\n supportPlan: '',\n creditApproved: 0,\n msaSignedAt: '2022-07-11T11:44:14.000Z',\n msaSignedBy: 'yahimaperez',\n enterprisePlugins: 0,\n grafanaCloud: 1,\n privacy: 'private',\n reseller: '',\n emergencySupport: false,\n htUsage: 0,\n hlUsage: 0,\n hlRetentionUsage: 0,\n hmUsage: 40,\n hmGraphiteUsage: 0,\n hgUsage: 1,\n geUsersUsage: 0,\n geInstancesUsage: 0,\n k6VuhUsage: 0,\n irmUsage: 0,\n hpUsage: 0,\n hgGrafanaUsage: 1,\n hgIncludedUsers: 2,\n hgOnCallUsage: 0,\n hmCurrentUsage: 40,\n hmIncludedSeries: 20000,\n hlIncludedUsage: 100,\n hlQueryToIngestRatio: 0,\n gcloudMonthlyCost: 0,\n awsCustomerId: '',\n awsMarketplaceSupport: 0,\n trialStartDate: null,\n trialEndDate: null,\n trialLengthDays: 0,\n trialNoticeDate: null,\n cancellationDate: null,\n retainedStackId: 0,\n allowGCloudTrial: 1,\n pluginSignatureType: 'private',\n contractType: 'self_serve',\n contractTypeId: 0,\n hgCurrentActiveUsers: 1,\n subscriptions: {\n current: {\n product: SubscriptionCodeType.SS_ADVANCED,\n isTrial: false,\n endDate: null,\n payload: {},\n plan: 'advanced',\n publicName: 'Advanced',\n },\n nextProduct: null,\n next: null,\n },\n hmAverageDpm: 1,\n hmTier1Rate: 0,\n hmTier2Min: 0,\n hmTier2Rate: 0,\n hmTier3Min: 0,\n hmTier3Rate: 0,\n hlTier1Rate: 0,\n hlTier2Min: 0,\n hlTier2Rate: 0,\n hlTier3Min: 0,\n hlTier3Rate: 0,\n hgTier1Rate: 0,\n hgTier2Min: 0,\n hgTier2Rate: 0,\n hgTier3Min: 0,\n hgTier3Rate: 0,\n htIncludedUsage: 0,\n htTier1Rate: 0,\n htTier2Min: 0,\n htTier2Rate: 0,\n htTier3Min: 0,\n htTier3Rate: 0,\n hlRetentionIncludedUsage: 0,\n hlRetentionTier1Rate: 0,\n hlRetentionTier2Min: 0,\n hlRetentionTier2Rate: 0,\n hlRetentionTier3Min: 0,\n hlRetentionTier3Rate: 0,\n hmGraphiteIncludedUsage: 0,\n hmGraphiteTier1Rate: 0,\n hmGraphiteTier2Min: 0,\n hmGraphiteTier2Rate: 0,\n hmGraphiteTier3Min: 0,\n hmGraphiteTier3Rate: 0,\n geUsersIncludedUsage: 0,\n geUsersTier1Rate: 0,\n geUsersTier2Min: 0,\n geUsersTier2Rate: 0,\n geUsersTier3Min: 0,\n geUsersTier3Rate: 0,\n geInstancesIncludedUsage: 0,\n geInstancesTier1Rate: 0,\n geInstancesTier2Min: 0,\n geInstancesTier2Rate: 0,\n geInstancesTier3Min: 0,\n geInstancesTier3Rate: 0,\n k6VuhIncludedUsage: 0,\n k6VuhTier1Rate: 0,\n k6VuhTier2Min: 0,\n k6VuhTier2Rate: 0,\n k6VuhTier3Min: 0,\n k6VuhTier3Rate: 0,\n k6VuhUnits: 100,\n irmStatus: 1,\n irmIncludedUsage: 2,\n irmTier1Rate: 20,\n irmTier2Min: 0,\n irmTier2Rate: 0,\n irmTier3Min: 0,\n irmTier3Rate: 0,\n hpIncludedUsage: 100,\n hpTier1Rate: 0.5,\n hpTier2Min: 0,\n hpTier2Rate: 0,\n hpTier3Min: 0,\n hpTier3Rate: 0,\n tags: ['staff'],\n accountManagerId: 0,\n accountManagerUsername: null,\n accountManagerName: null,\n accountOwnerId: 0,\n accountOwnerUsername: null,\n accountOwnerName: null,\n hmBillingStartDate: '2022-07-11T11:44:14.000Z',\n hmBillingEndDate: null,\n hmBilledToDate: null,\n hmOverageWarnDate: null,\n hmOverageAmount: 0,\n hmCurrentPrometheusUsage: 40,\n hmCurrentGraphiteUsage: 0,\n hlBillingStartDate: '2022-07-11T11:44:14.000Z',\n hlBillingEndDate: null,\n hlBilledToDate: null,\n hlOverageWarnDate: null,\n hlOverageAmount: 0,\n hlCurrentUsage: 0,\n hgBillingStartDate: '2022-07-11T11:44:14.000Z',\n hgBillingEndDate: null,\n hgBilledToDate: null,\n hgOverageWarnDate: null,\n hgOverageAmount: 0,\n hgActiveUsers: 0,\n hgDatasourceCnts: {\n graphite: 1,\n influxdb: 1,\n mysql: 1,\n },\n hgIntegrationCnts: {\n 'grafana-agent': 1,\n 'macos-node': 1,\n mysql: 1,\n },\n htOverageWarnDate: null,\n htFirstUsageDate: null,\n htCurrentUsage: 0,\n htOverageAmount: 0,\n htBillingStartDate: '2022-07-11T11:44:14.000Z',\n htBillingEndDate: null,\n htBilledToDate: null,\n hlRetentionOverageWarnDate: null,\n hlRetentionFirstUsageDate: '2022-07-13T13:02:39.000Z',\n hlRetentionCurrentUsage: 0,\n hlRetentionOverageAmount: 0,\n hlRetentionBillingStartDate: null,\n hlRetentionBillingEndDate: null,\n hlRetentionBilledToDate: null,\n hmGraphiteOverageWarnDate: null,\n hmGraphiteFirstUsageDate: null,\n hmGraphiteCurrentUsage: 0,\n hmGraphiteOverageAmount: 0,\n hmGraphiteBillingStartDate: null,\n hmGraphiteBillingEndDate: null,\n hmGraphiteBilledToDate: null,\n geUsersOverageWarnDate: null,\n geUsersFirstUsageDate: null,\n geUsersCurrentUsage: 0,\n geUsersOverageAmount: 0,\n geUsersBillingStartDate: null,\n geUsersBillingEndDate: null,\n geUsersBilledToDate: null,\n geInstancesOverageWarnDate: null,\n geInstancesFirstUsageDate: null,\n geInstancesCurrentUsage: 0,\n geInstancesOverageAmount: 0,\n geInstancesBillingStartDate: null,\n geInstancesBillingEndDate: null,\n geInstancesBilledToDate: null,\n k6VuhOverageWarnDate: null,\n k6VuhFirstUsageDate: null,\n k6VuhCurrentUsage: 0,\n k6VuhOverageAmount: 0,\n k6VuhBillingStartDate: null,\n k6VuhBillingEndDate: null,\n k6VuhBilledToDate: null,\n irmOverageWarnDate: null,\n irmFirstUsageDate: null,\n irmCurrentUsage: 0,\n irmOverageAmount: 0,\n irmBillingStartDate: null,\n irmBillingEndDate: null,\n irmBilledToDate: null,\n hpOverageWarnDate: null,\n hpFirstUsageDate: null,\n hpCurrentUsage: 0,\n hpOverageAmount: 0,\n hpBillingStartDate: '2023-08-01T00:00:00.000Z',\n hpBillingEndDate: null,\n hpBilledToDate: null,\n totalOverageAmount: 0,\n memberCnt: 2,\n licenseCnt: 0,\n licenseConfiguredCnt: 0,\n licenseUnconfiguredCnt: 0,\n hmInstanceCnt: 2,\n hmGraphiteInstanceCnt: 1,\n hmPrometheusInstanceCnt: 1,\n hgInstanceCnt: 1,\n hlInstanceCnt: 1,\n htInstanceCnt: 1,\n ubersmithClientId: 0,\n intacctCustomerId: 0,\n intacctCustomerUrl: '',\n committedArr: 0,\n nacvCredit: 0,\n effectiveMrrHigh: 0,\n zendeskId: 5868755880861,\n salesforceAccountId: '',\n salesforceLeadId: '00Q8W00000ezsMTUAY',\n salesforceCustomOrgId: 'aAN8W0000013N8eWAE',\n slackSupport: 0,\n slackSupportChannel: '',\n happinessRating: null,\n happinessNote: null,\n happinessCreatedAt: null,\n happinessExpiredAt: null,\n happinessChangedAt: null,\n happinessUserName: null,\n cancellationClientNotes: null,\n cancellationNotes: null,\n cancellationReason: '',\n netPromoterScore: null,\n hmFirstOverageDate: null,\n hmFirstApproachingLimitDate: null,\n spendCommitCreditBalance: 0,\n spendCommitCreditTotal: 0,\n projectedOverageAmount: 0,\n estimatedArr: 0,\n referredBy: null,\n k6OrgId: null,\n};\n\nexport const FREE_SUBSCRIPTION = {\n id: 1025948,\n slug: 'growthtrialhome',\n name: 'growthtrialhome',\n url: '',\n createdAt: '2024-01-09T09:38:27.000Z',\n createdBy: 'yahimaperez29',\n updatedAt: '2024-01-09T09:38:41.000Z',\n updatedBy: '',\n avatar: 'default',\n links: [\n { rel: 'self', href: '/orgs/growthtrialhome' },\n { rel: 'api-keys', href: '/orgs/growthtrialhome/api-keys' },\n { rel: 'members', href: '/orgs/growthtrialhome/members' },\n ],\n checksPerMonth: 0,\n wpPlan: '',\n hgInstanceLimit: 1,\n hmInstanceLimit: 0,\n hlInstanceLimit: 0,\n userQuota: 3,\n supportPlan: '',\n creditApproved: 0,\n msaSignedAt: '2024-01-09T09:38:28.000Z',\n msaSignedBy: 'yahimaperez29',\n enterprisePlugins: 1,\n grafanaCloud: 9,\n privacy: 'private',\n reseller: '',\n resellerId: null,\n resellerName: null,\n emergencySupport: false,\n htUsage: 45.62079705006048,\n hlUsage: 48.88696982955,\n hlRetentionUsage: 0,\n hmUsage: 3250,\n hmGraphiteUsage: 0,\n hgUsage: 3,\n geUsersUsage: 0,\n geInstancesUsage: 0,\n k6VuhUsage: 225,\n irmUsage: 0,\n hpUsage: 0,\n hgGrafanaUsage: 1,\n hgIncludedUsers: 3,\n hgPluginUsersOverageRate: 0,\n hgPluginUsersIncludedUsage: null,\n hgOnCallUsage: 0,\n hmCurrentUsage: 0,\n hmIncludedSeries: 10000,\n hlIncludedUsage: 50,\n hlQueryToIngestRatio: 0,\n gcloudMonthlyCost: 0,\n awsCustomerId: '',\n awsMarketplaceSupport: 0,\n trialStartDate: '2022-07-21T11:54:24.000Z',\n trialEndDate: '2022-08-04T11:54:24.000Z',\n trialLengthDays: 14,\n trialNoticeDate: null,\n cancellationDate: '2022-08-04T11:54:24.000Z',\n retainedStackId: 0,\n allowGCloudTrial: 0,\n pluginSignatureType: 'private',\n contractType: 'none',\n contractTypeId: 0,\n hgCurrentActiveUsers: 1,\n subscriptions: {\n current: {\n product: SubscriptionCodeType.FREE,\n isTrial: false,\n endDate: null,\n payload: {},\n plan: 'free',\n publicName: 'Free',\n },\n },\n hmAverageDpm: 1,\n hmTier1Rate: 8,\n hmTier2Min: 0,\n hmTier2Rate: 0,\n hmTier3Min: 0,\n hmTier3Rate: 0,\n hlTier1Rate: 0.5,\n hlTier2Min: 0,\n hlTier2Rate: 0,\n hlTier3Min: 0,\n hlTier3Rate: 0,\n hgTier1Rate: 8,\n hgTier2Min: 0,\n hgTier2Rate: 0,\n hgTier3Min: 0,\n hgTier3Rate: 0,\n htIncludedUsage: 100,\n htTier1Rate: 0.5,\n htTier2Min: 0,\n htTier2Rate: 0,\n htTier3Min: 0,\n htTier3Rate: 0,\n hlRetentionIncludedUsage: 0,\n hlRetentionTier1Rate: 0,\n hlRetentionTier2Min: 0,\n hlRetentionTier2Rate: 0,\n hlRetentionTier3Min: 0,\n hlRetentionTier3Rate: 0,\n hmGraphiteIncludedUsage: 0,\n hmGraphiteTier1Rate: 0,\n hmGraphiteTier2Min: 0,\n hmGraphiteTier2Rate: 0,\n hmGraphiteTier3Min: 0,\n hmGraphiteTier3Rate: 0,\n geUsersIncludedUsage: 0,\n geUsersTier1Rate: 0,\n geUsersTier2Min: 0,\n geUsersTier2Rate: 0,\n geUsersTier3Min: 0,\n geUsersTier3Rate: 0,\n geInstancesIncludedUsage: 0,\n geInstancesTier1Rate: 0,\n geInstancesTier2Min: 0,\n geInstancesTier2Rate: 0,\n geInstancesTier3Min: 0,\n geInstancesTier3Rate: 0,\n k6VuhIncludedUsage: 1000,\n k6VuhTier1Rate: 0.15,\n k6VuhTier2Min: 0,\n k6VuhTier2Rate: 0,\n k6VuhTier3Min: 0,\n k6VuhTier3Rate: 0,\n k6VuhUnits: 1,\n k6IPIncludedUsage: 0,\n k6IPTier1Rate: 30,\n k6IPTier2Min: 0,\n k6IPTier2Rate: 0,\n k6IPTier3Min: 0,\n k6IPTier3Rate: 0,\n irmStatus: 1,\n irmIncludedUsage: 3,\n irmTier1Rate: 20,\n irmTier2Min: 0,\n irmTier2Rate: 0,\n irmTier3Min: 0,\n irmTier3Rate: 0,\n hpIncludedUsage: 100,\n hpTier1Rate: 0.5,\n hpTier2Min: 0,\n hpTier2Rate: 0,\n hpTier3Min: 0,\n hpTier3Rate: 0,\n feO11YUsage: 53001,\n feO11YIncludedUsage: 50000,\n feO11YTier1Rate: 0,\n feO11YTier2Min: 0,\n feO11YTier2Rate: 0,\n feO11YTier3Min: 0,\n feO11YTier3Rate: 0,\n feO11YUnits: 1000,\n appO11YUsage: 2244,\n appO11YIncludedUsage: 2232,\n appO11YTier1Rate: 0,\n appO11YTier2Min: 0,\n appO11YTier2Rate: 0,\n appO11YTier3Min: 0,\n appO11YTier3Rate: 0,\n appO11YUnits: 1,\n smUsage: 101000,\n smIncludedUsage: 100000,\n smTier1Rate: 0,\n smTier2Min: 0,\n smTier2Rate: 0,\n smTier3Min: 0,\n smTier3Rate: 0,\n smUnits: 10000,\n};\n\nexport const NO_MARKETPLACE = {\n orgId: 576536,\n orgSlug: 'raintank',\n activeSubscription: false,\n};\n\nexport const GCP_MARKETPLACE_SUBSCRIPTION = {\n orgId: 967208,\n orgSlug: 'devotedstudios',\n activeSubscription: true,\n details: {\n isLegacy: false,\n provider: 'gcp',\n },\n};\n\nexport const AZURE_MARKETPLACE_SUBSCRIPTION = {\n orgId: 967208,\n orgSlug: 'hello',\n activeSubscription: true,\n details: {\n isLegacy: false,\n provider: 'azure',\n },\n};\n\nexport const AWS_MARKETPLACE_SUBSCRIPTION = {\n orgId: 967208,\n orgSlug: 'testaws',\n activeSubscription: true,\n details: {\n isLegacy: false,\n provider: 'aws',\n },\n};\n\n// eslint-disable-next-line import/no-unused-modules\nexport const ORG_BILLING_DIMENSIONS = {\n hg: {\n tiers: [\n {\n min: 3,\n },\n ],\n usage: {\n billable: 3,\n },\n },\n hm: {\n tiers: [\n {\n min: 3250,\n },\n ],\n usage: {\n billable: 3,\n },\n },\n hl: {\n tiers: [\n {\n min: 50,\n },\n ],\n usage: {\n billable: 48.88696982955,\n },\n },\n ht: {\n tiers: [\n {\n min: 50,\n },\n ],\n usage: {\n billable: 48.88696982955,\n },\n },\n k6Vuh: {\n tiers: [\n {\n min: 1000,\n },\n ],\n usage: {\n billable: 225,\n },\n },\n hp: {\n tiers: [\n {\n min: 100,\n },\n ],\n usage: {\n billable: 0,\n },\n },\n irm: {\n tiers: [\n {\n min: 3,\n },\n ],\n usage: {\n billable: 0,\n },\n },\n feO11Y: {\n tiers: [\n {\n min: 50000,\n },\n ],\n usage: {\n billable: 53001,\n },\n },\n appO11Y: {\n tiers: [\n {\n min: 50000,\n },\n ],\n usage: {\n billable: 53001,\n },\n },\n sm: {\n tiers: [\n {\n min: 100000,\n },\n ],\n usage: {\n billable: 101000,\n },\n },\n};\n","import { BillingData } from '../types/Billing';\nimport { CloudOrgData, OrgBillingDimensionsData } from 'feature/common/types/CloudOrgData';\nimport { HostedDataDetails } from 'feature/common/types/HostedDataDetails';\nimport { User } from '../types/User';\nimport * as baseApi from 'feature/common/api/baseApi';\nimport { FREE_INSTANCE, ORG_BILLING_DIMENSIONS, FREE_SUBSCRIPTION } from 'test/mocks/gcomMocks';\nimport { getUsageDataFromOrg } from 'feature/usage/utils/usageUtils';\nimport { MetricUnit } from 'feature/usage/types/MetricUnit';\n\nexport function getBillingData(\n orgData: CloudOrgData,\n orgBillingData: OrgBillingDimensionsData,\n users: User[] = []\n): BillingData {\n const usage = getUsageDataFromOrg(orgData, orgBillingData);\n return {\n logs: usage?.data[MetricUnit.LOGS] ?? 0,\n metrics: usage?.data[MetricUnit.METRICS] ?? 0,\n traces: usage?.data[MetricUnit.TRACES] ?? 0,\n users: users.filter((user) => user.email !== 'admin@localhost').length,\n k6Metrics: usage?.data[MetricUnit.K6_TESTS] ?? 0,\n feO11Y: usage?.data[MetricUnit.FEO11Y] ?? 0,\n appO11Y: usage?.data[MetricUnit.APPO11Y] ?? 0,\n sm: usage?.data[MetricUnit.SYNTHETIC_MONITORING] ?? 0,\n };\n}\n\nexport function getOrgData(slug: string): Promise {\n if (process.env.NODE_ENV === 'development' || (window as any).Cypress) {\n return Promise.resolve(FREE_SUBSCRIPTION as unknown as CloudOrgData);\n } else {\n return baseApi.apiGet(`api/plugin-proxy/${baseApi.PLUGIN_ID}/grafanacom-api/orgs/${slug}`);\n }\n}\n\nexport function getOrgBillingDimensionsData(slug: string): Promise {\n if (process.env.NODE_ENV === 'development' || (window as any).Cypress) {\n return Promise.resolve(ORG_BILLING_DIMENSIONS as unknown as OrgBillingDimensionsData);\n } else {\n return baseApi.apiGet(\n `api/plugin-proxy/${baseApi.PLUGIN_ID}/grafanacom-api/usage-billing/orgs/${slug}/dimensions`\n );\n }\n}\n\nexport function getOrgUsers(): Promise {\n return baseApi.apiGet<[User]>('/api/org/users');\n}\n\nexport function getHostedDataDetails(): Promise {\n if (process.env.NODE_ENV === 'development' || (window as any).Cypress) {\n return Promise.resolve(FREE_INSTANCE as unknown as HostedDataDetails);\n } else {\n return baseApi.apiGet(`api/plugin-proxy/${baseApi.PLUGIN_ID}/grafanacom-api/instances`);\n }\n}\n","import {\n LOGS_FREE_INCLUDED,\n METRICS_FREE_INCLUDED,\n TRACES_FREE_INCLUDED,\n USERS_FREE_INCLUDED,\n K6_FREE_INCLUDED,\n FEO11Y_FREE_INCLUDED,\n APPO11Y_FREE_INCLUDED,\n SYNTHETIC_MONITORING_FREE_INCLUDED,\n} from 'feature/usage/consts/usage';\n\nexport const freeUserDataLimits = {\n metrics: METRICS_FREE_INCLUDED,\n logs: LOGS_FREE_INCLUDED,\n traces: TRACES_FREE_INCLUDED,\n users: USERS_FREE_INCLUDED,\n k6Metrics: K6_FREE_INCLUDED,\n feO11Y: FEO11Y_FREE_INCLUDED,\n appO11Y: APPO11Y_FREE_INCLUDED,\n sm: SYNTHETIC_MONITORING_FREE_INCLUDED,\n};\n","import { BusEventWithPayload } from '@grafana/data';\n\nexport enum BannerType {\n Free = 'hg_notification_free',\n Limit = 'hg_notification_limit',\n Trial = 'hg_notification_trial',\n Update = 'hg_notification_update',\n TopNav = 'hg_notification_topnav',\n K6Available = 'hg_notification_k6available',\n K6LimitReached = 'hg_notification_k6vuh_limit',\n FeO11YLimitReached = 'hg_notification_feo11y_limit',\n AppO11YLimitReached = 'hg_notification_appo11y_limit',\n SyntheticMonitoringLimitReached = 'hg_notification_sm_limit',\n}\n\nexport enum BannerEvent {\n Close = 'close',\n Upgrade = 'upgrade',\n Feedback = 'feedback',\n GoK6 = 'gok6',\n}\n\nexport class PageBannerDisplayEvent extends BusEventWithPayload {\n static type = 'page-banner-display';\n}\n\ntype PageBannerEventPayload = {\n onClose?: () => void;\n severity?: PageBannerSeverity;\n body: React.ElementType;\n};\n\ntype PageBannerBodyProps = {\n severity: PageBannerSeverity;\n};\n\nexport enum PageBannerSeverity {\n info,\n warning,\n error,\n}\n","import { freeUserDataLimits } from '../consts/billing';\nimport { BannerEvent, BannerType } from '../types/Banner';\nimport { BillingData } from '../types/Billing';\n\n// TODO: add unit test\nconst constructArrayToStrings = (array: []) => {\n return array\n .map((item, index) => {\n if (array.length > 1) {\n if (array.length - 1 === index) {\n return `and ${item}`;\n } else if (array.length - 2 === index) {\n return item;\n }\n return `${item}, `;\n } else {\n return item;\n }\n })\n .join(' ');\n};\n\ntype LimitContent = {\n firstLine: [];\n secondLine: [];\n};\n\n// TODO: add unit test\nconst constructLimitContent = (\n metrics: boolean,\n logs: boolean,\n users: boolean,\n traces: boolean,\n feO11Y: boolean,\n appO11Y: boolean,\n sm: boolean\n) => {\n return {\n firstLine: [\n metrics && 'metrics',\n logs && 'logs',\n traces && 'traces',\n users && 'users',\n feO11Y && 'Frontend Observability',\n appO11Y && 'AppO11y',\n sm && 'Synthetics',\n ].filter((data) => data),\n secondLine: [\n metrics && 'send more metrics',\n feO11Y && 'view more sessions',\n appO11Y && 'use more host hours',\n sm && 'run more test executions',\n (logs || traces) && `${metrics || feO11Y || appO11Y ? 'data' : 'send more data'}`,\n users && 'bring your whole team',\n ].filter((data) => data),\n } as LimitContent;\n};\n\n// TODO: add unit test\nexport const getLimitContent = (data: BillingData) => {\n const { metrics, logs, users, traces, feO11Y, appO11Y, sm } = freeUserDataLimits;\n\n const isMetricsReached = data.metrics >= metrics;\n const isLogsReached = data.logs >= logs;\n const isUsersReached = data.users >= users;\n const isTracesReached = data.traces >= traces;\n const isFeO11yReached = data.feO11Y >= feO11Y;\n const isAppO11YReached = data.appO11Y >= appO11Y;\n const isSyntheticMonitoringReached = data.sm >= sm;\n\n const isOnlyUsersReached = !isMetricsReached && !isLogsReached && !isTracesReached && isUsersReached;\n\n const limitContentObject: LimitContent = constructLimitContent(\n isMetricsReached,\n isLogsReached,\n isUsersReached,\n isTracesReached,\n isFeO11yReached,\n isAppO11YReached,\n isSyntheticMonitoringReached\n );\n\n const firstLine = constructArrayToStrings(limitContentObject.firstLine);\n const secondLine = constructArrayToStrings(limitContentObject.secondLine);\n\n if (\n isMetricsReached ||\n isLogsReached ||\n isUsersReached ||\n isTracesReached ||\n isFeO11yReached ||\n isAppO11YReached ||\n isSyntheticMonitoringReached\n ) {\n if (isOnlyUsersReached) {\n return `You’ve reached your free tier limit of ${firstLine}. Upgrade to Grafana Cloud Pro to ${secondLine}.`;\n } else {\n return `You’ve reached your free tier limit for ${firstLine}. Upgrade to Grafana Cloud Pro to ${secondLine}.`;\n }\n }\n return;\n};\n\nexport const updateUrlParams = (params: string) => {\n const url = new URL(location.href);\n url.searchParams.set('src', params);\n history.pushState(null, '', url.toString());\n};\n\nexport const dispatchRudderStackEvent = (bannerType: BannerType, action: BannerEvent, orgId: number) => {\n (window as any).rudderanalytics?.track('notification_banner_event', {\n banner_type: bannerType,\n action,\n org_id: orgId,\n });\n};\n\nexport const isGrowthRoutingScreen = (url: string) => {\n return (\n url.includes('/a/cloud-home-app/onboarding-flow') ||\n url.includes('/a/cloud-home-app/getting-started') ||\n url.includes('/a/cloud-home-app/setup-wizard')\n );\n};\n\nexport const sleep = (ms: number) => new Promise((resolve) => setTimeout(resolve, ms));\n","import { isSignedIn } from 'feature/common/utils/UserUtils';\nimport { lsGet, lsKeys } from 'feature/common/utils/misc';\nimport { isGrowthRoutingScreen } from 'feature/notification-banners/utils/misc';\nimport { BannerType } from 'feature/notification-banners/types/Banner';\nimport { freeUserDataLimits } from 'feature/notification-banners/consts/billing';\nimport { BillingData } from 'feature/notification-banners/types/Billing';\nimport { CloudOrgData, OrgBillingDimensionsData } from 'feature/common/types/CloudOrgData';\nimport { isFree, isTrial } from 'feature/common/utils/orgInfoUtils';\nimport { getBillingData } from 'feature/notification-banners/api/notificationBannerApi';\nimport { User } from 'feature/notification-banners/types/User';\n\nexport const BannerDisplayOrder = [\n BannerType.Trial,\n BannerType.Limit,\n BannerType.Free,\n BannerType.K6LimitReached,\n BannerType.FeO11YLimitReached,\n BannerType.AppO11YLimitReached,\n BannerType.SyntheticMonitoringLimitReached,\n];\n\nconst checkMetricsLimits = (data: BillingData): boolean => {\n return (\n data.metrics >= freeUserDataLimits.metrics ||\n data.logs >= freeUserDataLimits.logs ||\n data.users >= freeUserDataLimits.users ||\n data.traces >= freeUserDataLimits.traces\n );\n};\n\nconst checkK6VUhsLimit = (data: BillingData): boolean => {\n return data.k6Metrics >= freeUserDataLimits.k6Metrics;\n};\n\nconst checkFeO11YUsageLimit = (data: BillingData): boolean => {\n return data.feO11Y >= freeUserDataLimits.feO11Y;\n};\n\nconst checkAppO11YUsageLimit = (data: BillingData): boolean => {\n return data.appO11Y >= freeUserDataLimits.appO11Y;\n};\n\nconst checkSyntheticMonitoringUsageLimit = (data: BillingData): boolean => {\n return data.sm >= freeUserDataLimits.sm;\n};\n\nexport const checkIfDisplayBanner = (\n type: BannerType,\n grafanaCloud: CloudOrgData,\n billingData: BillingData\n): boolean => {\n if (!isSignedIn() || isGrowthRoutingScreen(window.location.href)) {\n return false;\n }\n switch (type) {\n case BannerType.Trial:\n return isTrial(grafanaCloud) && lsGet(lsKeys.showTrialBanner) !== false;\n\n case BannerType.Limit:\n return isFree(grafanaCloud) && checkMetricsLimits(billingData) && lsGet(lsKeys.showLimitExceededBanner) !== false;\n\n case BannerType.Free:\n return isFree(grafanaCloud) && lsGet(lsKeys.showFreeBanner) !== false;\n\n case BannerType.K6LimitReached:\n return isFree(grafanaCloud) && checkK6VUhsLimit(billingData) && lsGet(lsKeys.showK6LimitReached) !== false;\n\n case BannerType.FeO11YLimitReached:\n return (\n isFree(grafanaCloud) && checkFeO11YUsageLimit(billingData) && lsGet(lsKeys.showFeO11YLimitReached) !== false\n );\n\n case BannerType.AppO11YLimitReached:\n return (\n isFree(grafanaCloud) && checkAppO11YUsageLimit(billingData) && lsGet(lsKeys.showAppO11YLimitReached) !== false\n );\n\n case BannerType.SyntheticMonitoringLimitReached:\n return (\n isFree(grafanaCloud) &&\n checkSyntheticMonitoringUsageLimit(billingData) &&\n lsGet(lsKeys.showSyntheticMonitoringLimitReached) !== false\n );\n\n default:\n return false;\n }\n};\n\nexport const isNotificationBannerVisible = (\n cloudOrgData: CloudOrgData,\n orgBillingData: OrgBillingDimensionsData,\n users: User[] = []\n) => {\n if (!!cloudOrgData && !!users) {\n const billingData = getBillingData(cloudOrgData, orgBillingData, users);\n\n for (let i = 0; i < BannerDisplayOrder.length; i++) {\n if (checkIfDisplayBanner(BannerDisplayOrder[i], cloudOrgData, billingData)) {\n return true;\n }\n }\n }\n return false;\n};\n","import { CLOUD_PLATFORM } from 'feature/common/types/CloudPlatform.enum';\nimport { TestGroup } from '../types/TestGroup';\n\nexport const CLOUD_PLATFORM_TITLES: { [key: string]: string } = {\n [CLOUD_PLATFORM.AWS]: 'Amazon Web Services',\n [CLOUD_PLATFORM.GCP]: 'Google Cloud Platform',\n [CLOUD_PLATFORM.AZURE]: 'Azure',\n};\n\nexport const DEFAULT_ONBOARDING_GROUP = TestGroup.CONTROL;\n\nexport const START_HEADER = 'Get started in a few easy steps';\nexport const CREATE_DASHBOARD_HEADER = 'Create your first dashboard';\nexport const TELL_US_WHAT_TO_CONNECT = 'Tell us what data you want to connect to Grafana Cloud.';\n\nexport const MOBILE = '540px';\nexport const TABLET = '820px';\nexport const DESKTOP = '1095px';\nexport const ULTRAWIDE = '1495px';\n\nexport const getSelectAndCreateDashboardTitle = (name: string) => {\n return `There are a couple of ways to connect your ${name} data. Choose one to get started.`;\n};\n\nexport enum OnboardingPaths {\n cloudServices = 'cloud-services',\n scaleCentralize = 'scale-and-centralize',\n createDashboard = 'select-and-create-dashboard',\n logsOnboarding = 'logs-onboarding',\n prometheus = 'prometheus',\n hostedData = 'hosted-data',\n customAwsOptions = 'custom-aws-options',\n customAwsData = 'custom-aws-data',\n customGcpOptions = 'custom-gcp-options',\n customGcpData = 'custom-gcp-data',\n customAzureOptions = 'custom-azure-options',\n otelOnboarding = 'otel',\n infrastructureOnboarding = 'infrastructure',\n customAzureData = 'custom-azure-data',\n}\n","export enum TestGroup {\n CONTROL = 'control',\n TEST = 'test',\n}\n","// Logs\nexport const LOGS_FREE_INCLUDED = 50; // gb\nexport const LOGS_USAGE = 'grafanacloud_org_logs_usage';\n\n// Metrics\nexport const METRICS_FREE_INCLUDED = 10000;\nexport const METRICS_USAGE_FREE = 'grafanacloud_instance_active_series';\nexport const METRICS_USAGE_PRO = 'grafanacloud_org_metrics_billable_series';\n\n// Traces\nexport const TRACES_FREE_INCLUDED = 50;\nexport const TRACES_USAGE = 'grafanacloud_org_traces_usage';\n\n// Users\nexport const USERS_FREE_INCLUDED = 3;\nexport const USERS_USAGE = 'grafanacloud_org_grafana_billable_users';\n\n// K6\nexport const K6_USAGE = 'grafanacloud_org_k6_virtual_user_hours_usage';\nexport const K6_FREE_INCLUDED = 500;\n\n// Profiles\nexport const PROFILES_FREE_INCLUDED = 50; // gb\nexport const PROFILES_USAGE = 'grafanacloud_org_profiles_usage';\n\n// IRM\nexport const IRM_FREE_INCLUDED = 3;\nexport const IRM_USAGE = 'grafanacloud_org_irm_users';\n\n// FEO11Y\nexport const FEO11Y_FREE_INCLUDED = 50000;\nexport const FEO11Y_USAGE = 'grafanacloud_org_fe_o11y_billable_sessions';\n\n// APPO11Y\nexport const APPO11Y_FREE_INCLUDED = 2232;\nexport const APPO11Y_USAGE = 'grafanacloud_org_app_o11y_billable_sessions';\n\n// Synthetic Monitoring\nexport const SYNTHETIC_MONITORING_FREE_INCLUDED = 100000;\nexport const SYNTHETIC_MONITORING_USAGE = 'grafanacloud_org_sm_billable_check_executions';\n\nexport const LIMIT_TITLE = 'Limit';\n","export enum MetricUnit {\n USERS = 'users',\n METRICS = 'metrics',\n LOGS = 'logs',\n TRACES = 'traces',\n K6_TESTS = 'k6-tests',\n PROFILES = 'profiles',\n IRM = 'irm',\n FEO11Y = 'feO11Y',\n APPO11Y = 'appO11Y',\n SYNTHETIC_MONITORING = 'sm',\n}\n","type Base = 2 | 10;\n\nconst getBaseMultiplier = (base: Base) => {\n if (base === 10) {\n return 1000;\n }\n return 1024;\n};\n\nconst unitsByPower = ['bytes', 'KB', 'MB', 'GB', 'TB', 'PB', 'EB', 'ZB', 'YB'] as const;\n\ntype StorageUnit = (typeof unitsByPower)[number];\n\ninterface StorageCapacity {\n amount: number;\n unit: StorageUnit;\n}\n\n/**\n * Format the amount from bytes to a human-readable string\n * eg 1024 GB on a 2 base will be formatted to 1 TB\n * @param bytes the number of bytes\n * @param baseMultiplier the base multiplier that can be 1024 (by default) or 1000.\n * @param precision the precision can be 2 (by default) or 10\n */\nexport const formatBytes = (bytes: number, baseMultiplier = 1024, precision = 2): StorageCapacity => {\n if (bytes === 0) {\n return { amount: 0, unit: 'bytes' };\n }\n const realPower = Math.log(bytes) / Math.log(baseMultiplier);\n const unit = unitsByPower[Math.floor(realPower)];\n return { amount: Number((bytes / baseMultiplier ** unitsByPower.indexOf(unit)).toFixed(precision)), unit };\n};\n\nexport const convertToBytes = (amount: number, unit: StorageUnit, baseMultiplier = 1024) =>\n amount * baseMultiplier ** unitsByPower.indexOf(unit);\n\nexport type Options = {\n precision?: number;\n base?: Base;\n};\n\n/**\n * Converts the amount into bytes and then formats it to a human-readable string with\n * the most suitable denomination for example if unit is 'GB' amount refers to the amount of gigabytes\n * This will be converted to bytes and then formatted to the most suitable denomination for viewing\n * eg 1024 GB on a 2 base will be formatted to 1 TB\n * @param amount the amount of the denomination to be converted\n * @param unit the unit of the amount received\n * @param {precision,base} default base is 2, but can be 10, defined the base value to calculate the denomination of byte, either 1024 or 1000\n * default precision is 1, but can be any number, defines the number of decimal places to display\n */\nexport const getStorageCapacityFrom = (\n amount: number | string,\n unit: StorageUnit,\n options?: Options\n): StorageCapacity | null => {\n const { precision = 1, base = 2 } = options || {};\n const parsedAmount = parseFloat(`${amount}`);\n if (isNaN(parsedAmount)) {\n return null;\n }\n const baseMultiplier = getBaseMultiplier(base);\n const bytes = convertToBytes(parsedAmount, unit, baseMultiplier);\n return formatBytes(bytes, baseMultiplier, precision);\n};\n\n/**\n * Format Storage capacity to {amount} {unit} or '-' if the amount is not a number\n * @param amount the amount of the denomination to be converted\n * @param unit the unit of the amount received\n * @param {precision,base} default base is 2, but can be 10, defined the base value to calculate the denomination of byte, either 1024 or 1000\n * default precision is 1, but can be any number, defines the number of decimal places to display\n */\nexport const formatStorageCapacity = (amount: number | string, unit: StorageUnit, options?: Options): string => {\n const data = getStorageCapacityFrom(amount, unit, options);\n if (!!data) {\n return `${data.amount} ${data.unit}`;\n }\n return '-';\n};\n","export enum CircleColor {\n RED = 'red',\n GREEN = 'green',\n GREY = 'grey',\n}\n","import { formatStorageCapacity } from 'feature/usage/utils/bytes';\nimport { MetricUnit } from 'feature/usage/types/MetricUnit';\nimport { externalPaths } from 'feature/common/consts/appPaths';\nimport { UsageInfo, UsageTooltip } from 'feature/usage/types/UsageInfo';\nimport { CircleColor } from 'feature/usage/types/CircleColor';\nimport { getMembersLink, getSubscriptionLink } from 'feature/home/components/refresh-design/helpers';\nimport { QueryError } from 'feature/common/types/QueryError';\nimport { BillingDimension, CloudOrgData, OrgBillingDimensionsData } from 'feature/common/types/CloudOrgData';\nimport { OrgUsageDetails } from 'feature/usage/types/OrgInfoData';\nimport { isFree } from 'feature/common/utils/orgInfoUtils';\nimport {\n IRM_FREE_INCLUDED,\n K6_FREE_INCLUDED,\n LOGS_FREE_INCLUDED,\n METRICS_FREE_INCLUDED,\n PROFILES_FREE_INCLUDED,\n TRACES_FREE_INCLUDED,\n USERS_FREE_INCLUDED,\n FEO11Y_FREE_INCLUDED,\n SYNTHETIC_MONITORING_FREE_INCLUDED,\n APPO11Y_FREE_INCLUDED,\n} from 'feature/usage/consts/usage';\n\nconst displayGbShort = (usage: number): string => {\n return formatStorageCapacity(usage, 'GB').replace('bytes', 'B').replace(' ', '');\n};\n\nexport function formatUsageValue(usage = 0, unit: MetricUnit, isFree: boolean): string {\n switch (unit) {\n case MetricUnit.LOGS:\n case MetricUnit.TRACES:\n case MetricUnit.PROFILES:\n return isFree ? displayGbShort(usage) : formatStorageCapacity(usage, 'GB');\n\n case MetricUnit.USERS:\n return usage.toLocaleString();\n\n case MetricUnit.METRICS:\n return handleCompactFormat(usage);\n\n case MetricUnit.FEO11Y:\n return `${handleCompactFormat(usage)} sessions`;\n\n case MetricUnit.APPO11Y:\n return `${handleCompactFormat(usage, MetricUnit.APPO11Y)} host hours`;\n\n case MetricUnit.K6_TESTS:\n return `${handleCompactFormat(usage)} VUh`;\n\n case MetricUnit.IRM:\n return handleCompactFormat(usage);\n\n case MetricUnit.SYNTHETIC_MONITORING:\n return `${handleCompactFormat(usage)}`;\n\n default:\n return `${usage}`;\n }\n}\n\nexport function pluralizeWord(count: number, word: string, pluralWord = word + 's'): string {\n return [1, -1].includes(Number(count)) ? word : pluralWord;\n}\n\nexport function handleCompactFormat(value = 0, unitType?: string): string {\n if (unitType === MetricUnit.APPO11Y) {\n return value >= 10000\n ? `${(value / 1000).toLocaleString(undefined, { minimumFractionDigits: 1, maximumFractionDigits: 1 })}k`\n : value.toLocaleString();\n }\n\n return value >= 1000\n ? `${\n value % 1000 > 0\n ? (value / 1000).toLocaleString(undefined, { minimumFractionDigits: 1, maximumFractionDigits: 1 })\n : (value / 1000).toLocaleString()\n }k`\n : value.toLocaleString();\n}\n\nconst NO_DATA = 'No data detected';\nconst LINK_NO_DATA = 'Connect data to get started →';\nconst UPGRADE_TOOLTIP = 'Nearing limit';\nconst UPGRADE_LINK = 'Upgrade to get unlimited usage →';\n\nconst getCircleColor = (usage = 0, limit = 0, unit: MetricUnit, free = false) => {\n let circleColor = CircleColor.GREEN;\n\n switch (unit) {\n case MetricUnit.TRACES:\n case MetricUnit.LOGS:\n case MetricUnit.PROFILES:\n if (usage === 0) {\n circleColor = CircleColor.GREY;\n } else if (free && limit > 0 && usage >= limit - 10 && usage <= limit) {\n circleColor = CircleColor.RED;\n }\n break;\n\n case MetricUnit.METRICS:\n if (usage < 1) {\n circleColor = CircleColor.GREY;\n } else if (free && limit > 0 && usage >= limit - 1000 && usage <= limit) {\n circleColor = CircleColor.RED;\n }\n break;\n\n case MetricUnit.K6_TESTS:\n if (usage === 0) {\n circleColor = CircleColor.GREY;\n } else if (free && limit > 0 && usage >= limit - 100 && usage <= limit) {\n circleColor = CircleColor.RED;\n }\n break;\n\n case MetricUnit.IRM:\n if (usage === 0) {\n circleColor = CircleColor.GREY;\n } else if (free && limit > 0 && usage === limit) {\n circleColor = CircleColor.RED;\n }\n break;\n\n case MetricUnit.USERS:\n if (usage <= 1) {\n circleColor = CircleColor.GREY;\n } else if (free && limit > 0 && usage === limit) {\n circleColor = CircleColor.RED;\n }\n break;\n\n case MetricUnit.FEO11Y:\n if (usage < 1) {\n circleColor = CircleColor.GREY;\n } else if (free && limit > 0 && usage >= limit - 5000) {\n circleColor = CircleColor.RED;\n }\n break;\n\n case MetricUnit.APPO11Y:\n case MetricUnit.SYNTHETIC_MONITORING:\n if (usage === 0) {\n circleColor = CircleColor.GREY;\n } else if (free && limit > 0 && usage >= limit) {\n circleColor = CircleColor.RED;\n }\n break;\n\n default:\n if (usage === 0) {\n circleColor = CircleColor.GREY;\n }\n }\n\n return circleColor;\n};\n\nconst getRedTooltip = (metricUnit: MetricUnit, free: boolean, orgSlug?: string): UsageTooltip => {\n let tooltipTitle = '';\n let tooltipDescription = '';\n let tooltipUrl = '';\n\n if (free) {\n if (metricUnit === MetricUnit.USERS || metricUnit === MetricUnit.IRM) {\n tooltipTitle = 'User limit reached';\n tooltipDescription = 'Upgrade to add users →';\n } else if (metricUnit === MetricUnit.SYNTHETIC_MONITORING) {\n tooltipTitle = 'Usage limit reached';\n tooltipDescription = 'Upgrade to get unlimited test executions →';\n } else if (metricUnit === MetricUnit.APPO11Y) {\n tooltipTitle = 'Limit reached';\n tooltipDescription = 'Upgrade to get more host hours →';\n } else {\n tooltipTitle = UPGRADE_TOOLTIP;\n tooltipDescription = UPGRADE_LINK;\n }\n tooltipUrl = getSubscriptionLink(orgSlug);\n }\n\n return { title: tooltipTitle, description: tooltipDescription, url: tooltipUrl };\n};\n\nconst getGrayTooltip = (metricUnit: MetricUnit, orgSlug?: string): UsageTooltip => {\n let tooltipTitle = NO_DATA;\n let tooltipDescription = LINK_NO_DATA;\n let tooltipUrl = externalPaths.integrationsAndConnections;\n\n switch (metricUnit) {\n case MetricUnit.PROFILES:\n tooltipUrl = externalPaths.profiles;\n break;\n\n case MetricUnit.K6_TESTS:\n tooltipTitle = 'No k6 test runs';\n tooltipDescription = 'Get started with performance testing →';\n tooltipUrl = externalPaths.k6Projects;\n break;\n\n case MetricUnit.IRM:\n tooltipTitle = 'No IRM users';\n tooltipDescription = 'Get started with IRM →';\n tooltipUrl = externalPaths.irmActiveUsers;\n break;\n\n case MetricUnit.USERS:\n tooltipTitle = 'No other users';\n tooltipDescription = 'Invite your team to join →';\n tooltipUrl = getMembersLink(orgSlug);\n break;\n\n case MetricUnit.FEO11Y:\n tooltipTitle = 'No frontend observability sessions';\n tooltipDescription = 'Get started with FE o11y →';\n tooltipUrl = externalPaths.feO11Y;\n break;\n\n case MetricUnit.APPO11Y:\n tooltipTitle = 'No application observability host hours';\n tooltipDescription = 'Get started with AppO11y →';\n tooltipUrl = externalPaths.applicationObservability;\n break;\n\n case MetricUnit.SYNTHETIC_MONITORING:\n tooltipTitle = 'No Synthetics test executions';\n tooltipDescription = 'Get started with Synthetic Monitoring →';\n tooltipUrl = externalPaths.syntheticMonitoringApp;\n break;\n }\n\n return { title: tooltipTitle, description: tooltipDescription, url: tooltipUrl };\n};\n\nconst getTooltipInfo = (usage = 0, limit = 0, unit: MetricUnit, free: boolean, orgSlug?: string): UsageTooltip => {\n const greenTooltip: UsageTooltip = { title: '', description: '', url: '' };\n\n switch (unit) {\n case MetricUnit.TRACES:\n case MetricUnit.LOGS:\n case MetricUnit.PROFILES:\n if (usage < 1) {\n return getGrayTooltip(unit, orgSlug);\n } else if (free && limit > 0 && usage >= limit - 10 && usage <= limit) {\n return getRedTooltip(unit, free, orgSlug);\n } else {\n return greenTooltip;\n }\n\n case MetricUnit.METRICS:\n if (usage < 1) {\n return getGrayTooltip(unit, orgSlug);\n } else if (free && limit > 0 && usage >= limit - 1000 && usage <= limit) {\n return getRedTooltip(unit, free, orgSlug);\n } else {\n return greenTooltip;\n }\n\n case MetricUnit.FEO11Y:\n if (usage < 1) {\n return getGrayTooltip(unit, orgSlug);\n } else if (free && limit > 0 && usage >= limit - 5000) {\n return getRedTooltip(unit, free, orgSlug);\n } else {\n return greenTooltip;\n }\n\n case MetricUnit.K6_TESTS:\n if (usage === 0) {\n return getGrayTooltip(unit, orgSlug);\n } else if (free && limit > 0 && usage >= limit - 100 && usage <= limit) {\n return getRedTooltip(unit, free, orgSlug);\n } else {\n return greenTooltip;\n }\n\n case MetricUnit.APPO11Y:\n if (usage === 0) {\n return getGrayTooltip(unit, orgSlug);\n } else if (free && limit > 0 && usage >= limit) {\n return getRedTooltip(unit, free, orgSlug);\n } else {\n return greenTooltip;\n }\n\n case MetricUnit.IRM:\n if (usage === 0) {\n return getGrayTooltip(unit, orgSlug);\n } else if (free && limit > 0 && usage === limit) {\n return getRedTooltip(unit, free, orgSlug);\n } else {\n return greenTooltip;\n }\n\n case MetricUnit.USERS:\n if (usage <= 1) {\n return getGrayTooltip(unit, orgSlug);\n } else if (free && limit > 0 && usage === limit) {\n return getRedTooltip(unit, free, orgSlug);\n } else {\n return greenTooltip;\n }\n\n case MetricUnit.SYNTHETIC_MONITORING:\n if (usage <= 1) {\n return getGrayTooltip(unit, orgSlug);\n } else if (free && limit > 0 && usage >= limit) {\n return getRedTooltip(unit, free, orgSlug);\n } else {\n return greenTooltip;\n }\n }\n};\n\nconst getTitles = (unit: MetricUnit): string => {\n switch (unit) {\n case MetricUnit.METRICS:\n return 'Metrics';\n\n case MetricUnit.TRACES:\n return 'Traces';\n\n case MetricUnit.LOGS:\n return 'Logs';\n\n case MetricUnit.PROFILES:\n return 'Profiles';\n\n case MetricUnit.K6_TESTS:\n return 'K6 tests';\n\n case MetricUnit.IRM:\n return 'IRM active users';\n\n case MetricUnit.USERS:\n return 'Users';\n\n case MetricUnit.FEO11Y:\n return 'Frontend Observability';\n\n case MetricUnit.APPO11Y:\n return 'AppO11y';\n\n case MetricUnit.SYNTHETIC_MONITORING:\n return 'Synthetics';\n\n default:\n return '';\n }\n};\n\nexport function getStatus(\n usage = 0,\n limit = 0,\n unit: MetricUnit,\n free: boolean,\n orgSlug?: string,\n error?: QueryError\n): UsageInfo {\n const title = getTitles(unit);\n\n if (!!error) {\n return { title } as UsageInfo;\n }\n const circleColor = getCircleColor(usage, limit, unit, free);\n const { title: tooltip, description, url } = getTooltipInfo(usage, limit, unit, free, orgSlug);\n\n return {\n title,\n circleColor,\n link: { title: description, url },\n tooltip,\n };\n}\n\nconst getUsageLimitOrDefault = (\n dimensionId: BillingDimension,\n orgData: CloudOrgData,\n orgBillingData: OrgBillingDimensionsData,\n defaultLimit: number\n): number => {\n const orgLimit: number = orgBillingData[dimensionId].tiers[0]?.min ?? 0;\n\n if (isFree(orgData)) {\n return (orgLimit === 0 && defaultLimit) || orgLimit;\n }\n return orgLimit ?? 0;\n};\n\nexport const getUsageDataFromOrg = (\n orgData: CloudOrgData | undefined,\n orgBillingData: OrgBillingDimensionsData | undefined\n): OrgUsageDetails | undefined => {\n if (!orgData || !orgBillingData) {\n return undefined;\n }\n\n const usageData = {\n [MetricUnit.USERS]: orgBillingData.hg.usage.billable,\n [MetricUnit.METRICS]: orgBillingData.hm.usage.billable,\n [MetricUnit.LOGS]: orgBillingData.hl.usage.billable,\n [MetricUnit.TRACES]: orgBillingData.ht.usage.billable,\n [MetricUnit.K6_TESTS]: orgBillingData.k6Vuh.usage.billable,\n [MetricUnit.PROFILES]: orgBillingData.hp.usage.billable,\n [MetricUnit.IRM]: orgBillingData.irm.usage.billable,\n [MetricUnit.FEO11Y]: orgBillingData.feO11Y.usage.billable,\n [MetricUnit.APPO11Y]: orgBillingData.appO11Y.usage.billable,\n [MetricUnit.SYNTHETIC_MONITORING]: orgBillingData.sm.usage.billable,\n };\n const usageLimit = {\n [MetricUnit.USERS]: getUsageLimitOrDefault('hg', orgData, orgBillingData, USERS_FREE_INCLUDED),\n [MetricUnit.METRICS]: getUsageLimitOrDefault('hm', orgData, orgBillingData, METRICS_FREE_INCLUDED),\n [MetricUnit.LOGS]: getUsageLimitOrDefault('hl', orgData, orgBillingData, LOGS_FREE_INCLUDED),\n [MetricUnit.TRACES]: getUsageLimitOrDefault('ht', orgData, orgBillingData, TRACES_FREE_INCLUDED),\n [MetricUnit.K6_TESTS]: getUsageLimitOrDefault('k6Vuh', orgData, orgBillingData, K6_FREE_INCLUDED),\n [MetricUnit.PROFILES]: getUsageLimitOrDefault('hp', orgData, orgBillingData, PROFILES_FREE_INCLUDED),\n [MetricUnit.IRM]: getUsageLimitOrDefault('irm', orgData, orgBillingData, IRM_FREE_INCLUDED),\n [MetricUnit.FEO11Y]: getUsageLimitOrDefault('feO11Y', orgData, orgBillingData, FEO11Y_FREE_INCLUDED),\n [MetricUnit.APPO11Y]: getUsageLimitOrDefault('appO11Y', orgData, orgBillingData, APPO11Y_FREE_INCLUDED),\n [MetricUnit.SYNTHETIC_MONITORING]: getUsageLimitOrDefault(\n 'sm',\n orgData,\n orgBillingData,\n SYNTHETIC_MONITORING_FREE_INCLUDED\n ),\n };\n return { data: usageData, limit: usageLimit } as OrgUsageDetails;\n};\n","module.exports = __WEBPACK_EXTERNAL_MODULE__6089__;","module.exports = __WEBPACK_EXTERNAL_MODULE__7781__;","module.exports = __WEBPACK_EXTERNAL_MODULE__8531__;","module.exports = __WEBPACK_EXTERNAL_MODULE__2007__;","module.exports = __WEBPACK_EXTERNAL_MODULE__819__;","module.exports = __WEBPACK_EXTERNAL_MODULE__3734__;","module.exports = __WEBPACK_EXTERNAL_MODULE__3241__;","module.exports = __WEBPACK_EXTERNAL_MODULE__5959__;","module.exports = __WEBPACK_EXTERNAL_MODULE__8398__;","module.exports = __WEBPACK_EXTERNAL_MODULE__200__;","module.exports = __WEBPACK_EXTERNAL_MODULE__1159__;","module.exports = __WEBPACK_EXTERNAL_MODULE__7694__;","module.exports = __WEBPACK_EXTERNAL_MODULE__1269__;","// The module cache\nvar __webpack_module_cache__ = {};\n\n// The require function\nfunction __webpack_require__(moduleId) {\n\t// Check if module is in cache\n\tvar cachedModule = __webpack_module_cache__[moduleId];\n\tif (cachedModule !== undefined) {\n\t\treturn cachedModule.exports;\n\t}\n\t// Create a new module (and put it into the cache)\n\tvar module = __webpack_module_cache__[moduleId] = {\n\t\tid: moduleId,\n\t\tloaded: false,\n\t\texports: {}\n\t};\n\n\t// Execute the module function\n\t__webpack_modules__[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n\t// Flag the module as loaded\n\tmodule.loaded = true;\n\n\t// Return the exports of the module\n\treturn module.exports;\n}\n\n// expose the modules object (__webpack_modules__)\n__webpack_require__.m = __webpack_modules__;\n\n","__webpack_require__.amdO = {};","// getDefaultExport function for compatibility with non-harmony modules\n__webpack_require__.n = (module) => {\n\tvar getter = module && module.__esModule ?\n\t\t() => (module['default']) :\n\t\t() => (module);\n\t__webpack_require__.d(getter, { a: getter });\n\treturn getter;\n};","// define getter functions for harmony exports\n__webpack_require__.d = (exports, definition) => {\n\tfor(var key in definition) {\n\t\tif(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {\n\t\t\tObject.defineProperty(exports, key, { enumerable: true, get: definition[key] });\n\t\t}\n\t}\n};","__webpack_require__.f = {};\n// This file contains only the entry chunk.\n// The chunk loading function for additional chunks\n__webpack_require__.e = (chunkId) => {\n\treturn Promise.all(Object.keys(__webpack_require__.f).reduce((promises, key) => {\n\t\t__webpack_require__.f[key](chunkId, promises);\n\t\treturn promises;\n\t}, []));\n};","// This function allow to reference async chunks\n__webpack_require__.u = (chunkId) => {\n\t// return url for filenames based on template\n\treturn \"\" + chunkId + \".js\";\n};","__webpack_require__.g = (function() {\n\tif (typeof globalThis === 'object') return globalThis;\n\ttry {\n\t\treturn this || new Function('return this')();\n\t} catch (e) {\n\t\tif (typeof window === 'object') return window;\n\t}\n})();","__webpack_require__.o = (obj, prop) => (Object.prototype.hasOwnProperty.call(obj, prop))","// define __esModule on exports\n__webpack_require__.r = (exports) => {\n\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n\t}\n\tObject.defineProperty(exports, '__esModule', { value: true });\n};","__webpack_require__.nmd = (module) => {\n\tmodule.paths = [];\n\tif (!module.children) module.children = [];\n\treturn module;\n};","__webpack_require__.p = \"public/plugins/cloud-home-app/\";","// no baseURI\n\n// object to store loaded and loading chunks\n// undefined = chunk not loaded, null = chunk preloaded/prefetched\n// [resolve, reject, Promise] = chunk loading, 0 = chunk loaded\nvar installedChunks = {\n\t231: 0\n};\n\n__webpack_require__.f.j = (chunkId, promises) => {\n\t\t// JSONP chunk loading for javascript\n\t\tvar installedChunkData = __webpack_require__.o(installedChunks, chunkId) ? installedChunks[chunkId] : undefined;\n\t\tif(installedChunkData !== 0) { // 0 means \"already installed\".\n\n\t\t\t// a Promise means \"currently loading\".\n\t\t\tif(installedChunkData) {\n\t\t\t\tpromises.push(installedChunkData[2]);\n\t\t\t} else {\n\t\t\t\tif(true) { // all chunks have JS\n\t\t\t\t\t// setup Promise in chunk cache\n\t\t\t\t\tvar promise = new Promise((resolve, reject) => (installedChunkData = installedChunks[chunkId] = [resolve, reject]));\n\t\t\t\t\tpromises.push(installedChunkData[2] = promise);\n\n\t\t\t\t\t// start chunk loading\n\t\t\t\t\tvar url = __webpack_require__.p + __webpack_require__.u(chunkId);\n\t\t\t\t\t// create error before stack unwound to get useful stacktrace later\n\t\t\t\t\tvar error = new Error();\n\t\t\t\t\tvar loadingEnded = (event) => {\n\t\t\t\t\t\tif(__webpack_require__.o(installedChunks, chunkId)) {\n\t\t\t\t\t\t\tinstalledChunkData = installedChunks[chunkId];\n\t\t\t\t\t\t\tif(installedChunkData !== 0) installedChunks[chunkId] = undefined;\n\t\t\t\t\t\t\tif(installedChunkData) {\n\t\t\t\t\t\t\t\tvar errorType = event && (event.type === 'load' ? 'missing' : event.type);\n\t\t\t\t\t\t\t\tvar realSrc = event && event.target && event.target.src;\n\t\t\t\t\t\t\t\terror.message = 'Loading chunk ' + chunkId + ' failed.\\n(' + errorType + ': ' + realSrc + ')';\n\t\t\t\t\t\t\t\terror.name = 'ChunkLoadError';\n\t\t\t\t\t\t\t\terror.type = errorType;\n\t\t\t\t\t\t\t\terror.request = realSrc;\n\t\t\t\t\t\t\t\tinstalledChunkData[1](error);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t};\n\t\t\t\t\t__webpack_require__.l(url, loadingEnded, \"chunk-\" + chunkId, chunkId);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n};\n\n// no prefetching\n\n// no preloaded\n\n// no HMR\n\n// no HMR manifest\n\n// no on chunks loaded\n\n// install a JSONP callback for chunk loading\nvar webpackJsonpCallback = (parentChunkLoadingFunction, data) => {\n\tvar [chunkIds, moreModules, runtime] = data;\n\t// add \"moreModules\" to the modules object,\n\t// then flag all \"chunkIds\" as loaded and fire callback\n\tvar moduleId, chunkId, i = 0;\n\tif(chunkIds.some((id) => (installedChunks[id] !== 0))) {\n\t\tfor(moduleId in moreModules) {\n\t\t\tif(__webpack_require__.o(moreModules, moduleId)) {\n\t\t\t\t__webpack_require__.m[moduleId] = moreModules[moduleId];\n\t\t\t}\n\t\t}\n\t\tif(runtime) var result = runtime(__webpack_require__);\n\t}\n\tif(parentChunkLoadingFunction) parentChunkLoadingFunction(data);\n\tfor(;i < chunkIds.length; i++) {\n\t\tchunkId = chunkIds[i];\n\t\tif(__webpack_require__.o(installedChunks, chunkId) && installedChunks[chunkId]) {\n\t\t\tinstalledChunks[chunkId][0]();\n\t\t}\n\t\tinstalledChunks[chunkId] = 0;\n\t}\n\n}\n\nvar chunkLoadingGlobal = self[\"webpackChunkcloud_home_app\"] = self[\"webpackChunkcloud_home_app\"] || [];\nchunkLoadingGlobal.forEach(webpackJsonpCallback.bind(null, 0));\nchunkLoadingGlobal.push = webpackJsonpCallback.bind(null, chunkLoadingGlobal.push.bind(chunkLoadingGlobal));","import { useStyles2 } from '@grafana/ui';\nimport React from 'react';\nimport { BannerEvent, BannerType, PageBannerSeverity } from '../types/Banner';\nimport { dispatchRudderStackEvent } from '../utils/misc';\nimport { getStyles } from './Button.styles';\nimport { getSubscriptionLink } from 'feature/home/components/refresh-design/helpers';\n\nexport const UpgradeNow = ({\n orgSlug,\n orgId,\n severity,\n bannerType,\n}: {\n orgSlug: string;\n orgId: number;\n severity: PageBannerSeverity;\n bannerType: BannerType;\n}) => {\n const styles = useStyles2((theme) => getStyles(theme, severity));\n\n const handleUpgradeClick = () => {\n dispatchRudderStackEvent(bannerType, BannerEvent.Upgrade, orgId);\n };\n\n return (\n \n Upgrade now\n \n );\n};\n","import { css } from '@emotion/css';\nimport { GrafanaTheme2 } from '@grafana/data';\nimport { PageBannerSeverity } from '../types/Banner';\n\nexport const getStyles = (theme: GrafanaTheme2, severity: PageBannerSeverity) => {\n const severityValue = PageBannerSeverity[severity] as keyof typeof PageBannerSeverity;\n const severityTextColor = theme.colors[severityValue].contrastText;\n return {\n link: css`\n border: 1px solid ${severityTextColor};\n border-radius: ${theme.shape.borderRadius(1)};\n color: ${severityTextColor};\n margin-left: ${theme.spacing(1)};\n display: inline-block;\n padding: 1px 6px;\n\n &:hover {\n background: none;\n }\n `,\n };\n};\n","import React, { useEffect } from 'react';\nimport { BannerType, PageBannerSeverity } from '../types/Banner';\nimport { updateUrlParams } from '../utils/misc';\nimport { UpgradeNow } from './UpgradeNow';\n\nexport const FreeNotificationBanner = ({\n orgSlug,\n orgId,\n severity,\n}: {\n orgSlug: string;\n orgId: number;\n severity: PageBannerSeverity;\n}) => {\n useEffect(() => {\n updateUrlParams('hg_notification_free');\n }, []);\n\n return (\n <>\n Grafana Cloud Free includes a lot, but has some limitations. Upgrade plans for pay-as-you-go usage, premium\n support and more.\n \n \n );\n};\n","import React, { useEffect } from 'react';\nimport { BannerType, PageBannerSeverity } from '../types/Banner';\nimport { BillingData } from '../types/Billing';\nimport { getLimitContent, updateUrlParams } from '../utils/misc';\nimport { UpgradeNow } from './UpgradeNow';\n\nexport const LimitExceededNotificationBanner = ({\n data,\n orgSlug,\n orgId,\n severity,\n}: {\n data: BillingData;\n orgSlug: string;\n orgId: number;\n severity: PageBannerSeverity;\n}) => {\n useEffect(() => {\n updateUrlParams('hg_notification_limit');\n }, []);\n\n const content = getLimitContent(data);\n return (\n <>\n {content}\n \n \n );\n};\n","import React, { useEffect } from 'react';\nimport { BannerType, PageBannerSeverity } from '../types/Banner';\nimport { updateUrlParams } from '../utils/misc';\nimport { UpgradeNow } from './UpgradeNow';\n\nexport const TrialNotificationBanner = ({\n trialExpiresAt,\n orgSlug,\n orgId,\n severity,\n}: {\n trialExpiresAt: string;\n orgSlug: string;\n orgId: number;\n severity: PageBannerSeverity;\n}) => {\n useEffect(() => {\n updateUrlParams('hg_notification_trial');\n }, []);\n\n const expiresAt = new Date(trialExpiresAt).toLocaleDateString('default', {\n month: 'long',\n day: 'numeric',\n year: 'numeric',\n });\n\n return (\n <>\n You have uncapped usage until {expiresAt}. Upgrade plans to continue using Grafana Cloud with unlimited,\n pay-as-you-go usage.\n \n \n );\n};\n","import React, { useEffect } from 'react';\nimport { BannerType, PageBannerSeverity } from '../types/Banner';\nimport { updateUrlParams } from '../utils/misc';\n\nimport { UpgradeNow } from './UpgradeNow';\n\nexport const K6LimitReachedNotificationBanner = ({\n orgSlug,\n orgId,\n severity,\n}: {\n orgId: number;\n orgSlug: string;\n severity: PageBannerSeverity;\n}) => {\n useEffect(() => {\n updateUrlParams(BannerType.K6LimitReached);\n }, []);\n\n return (\n <>\n You have reached your free tier limit for k6 testing. Upgrade to Grafana Cloud Pro to run more tests.\n \n \n );\n};\n","import React, { useEffect } from 'react';\nimport { BannerType, PageBannerSeverity } from '../types/Banner';\nimport { updateUrlParams } from '../utils/misc';\n\nimport { UpgradeNow } from './UpgradeNow';\n\nexport const FeO11YLimitReachedNotificationBanner = ({\n orgSlug,\n orgId,\n severity,\n}: {\n orgId: number;\n orgSlug: string;\n severity: PageBannerSeverity;\n}) => {\n useEffect(() => {\n updateUrlParams(BannerType.FeO11YLimitReached);\n }, []);\n\n return (\n <>\n You have reached your free tier limit for Frontend Observability. Upgrade to Grafana Cloud Pro to track more\n sessions.\n \n \n );\n};\n","import React, { useEffect } from 'react';\nimport { BannerType, PageBannerSeverity } from '../types/Banner';\nimport { updateUrlParams } from '../utils/misc';\n\nimport { UpgradeNow } from './UpgradeNow';\n\nexport const AppO11YLimitReachedNotificationBanner = ({\n orgSlug,\n orgId,\n severity,\n}: {\n orgId: number;\n orgSlug: string;\n severity: PageBannerSeverity;\n}) => {\n useEffect(() => {\n updateUrlParams(BannerType.AppO11YLimitReached);\n }, []);\n\n return (\n <>\n You have reached your free tier limit for AppO11y. Upgrade to Grafana Cloud Pro to use more host hours.\n \n \n );\n};\n","import React, { useEffect } from 'react';\nimport { BannerType, PageBannerSeverity } from '../types/Banner';\nimport { updateUrlParams } from '../utils/misc';\n\nimport { UpgradeNow } from './UpgradeNow';\n\nexport const SyntheticMonitoringLimitNotificationBanner = ({\n orgSlug,\n orgId,\n severity,\n}: {\n orgId: number;\n orgSlug: string;\n severity: PageBannerSeverity;\n}) => {\n useEffect(() => {\n updateUrlParams(BannerType.SyntheticMonitoringLimitReached);\n }, []);\n\n return (\n <>\n You have reached your free tier limit for Synthetics. Upgrade to Grafana Cloud Pro to run more test executions.\n \n \n );\n};\n","import React from 'react';\nimport {\n getBillingData,\n getHostedDataDetails,\n getOrgBillingDimensionsData,\n getOrgData,\n getOrgUsers,\n} from '../api/notificationBannerApi';\nimport { dispatchRudderStackEvent, sleep } from '../utils/misc';\nimport { lsKeys, lsSave } from 'feature/common/utils/misc';\nimport { getAppEvents } from '@grafana/runtime';\nimport { BannerEvent, BannerType, PageBannerDisplayEvent, PageBannerSeverity } from '../types/Banner';\nimport { BillingData } from '../types/Billing';\nimport { FreeNotificationBanner } from './FreeNotificationBanner';\nimport { LimitExceededNotificationBanner } from './LimitExceededNotificationBanner';\nimport { TrialNotificationBanner } from './TrialNotificationBanner';\nimport { K6LimitReachedNotificationBanner } from './K6LimitReachedNotificationBanner';\nimport { FeO11YLimitReachedNotificationBanner } from './FeO11YLimitReachedNotificationBanner';\nimport { AppO11YLimitReachedNotificationBanner } from './AppO11YLimitReachedNotificationBanner';\nimport { SyntheticMonitoringLimitNotificationBanner } from './SyntheticMonitoringLimitNotificationBanner';\nimport { CloudOrgData } from 'feature/common/types/CloudOrgData';\nimport { HostedDataDetails } from 'feature/common/types/HostedDataDetails';\nimport { EventBus } from '@grafana/data';\nimport { BannerDisplayOrder, checkIfDisplayBanner } from 'feature/notification-banners/utils/notificationBanners';\nimport { getTrialEndDate } from 'feature/common/utils/orgInfoUtils';\n\nconst generateTrialBannerEvent = (trialExpiresAt: string, orgSlug: string, orgId: number) => {\n const severity = PageBannerSeverity.info;\n return new PageBannerDisplayEvent({\n onClose: function () {\n lsSave(lsKeys.showTrialBanner, 'false');\n window.dispatchEvent(new Event('storage'));\n dispatchRudderStackEvent(BannerType.Trial, BannerEvent.Close, orgId);\n },\n severity,\n body: function Component() {\n return (\n \n );\n },\n });\n};\n\nconst generateFreeBannerEvent = (orgSlug: string, data: BillingData, orgId: number) => {\n const severity = PageBannerSeverity.warning;\n return new PageBannerDisplayEvent({\n onClose: function () {\n lsSave(lsKeys.showFreeBanner, 'false');\n window.dispatchEvent(new Event('storage'));\n dispatchRudderStackEvent(BannerType.Free, BannerEvent.Close, orgId);\n },\n severity,\n body: function Component() {\n return ;\n },\n });\n};\n\nconst generateLimitExceededBannerEvent = (orgSlug: string, data: BillingData, orgId: number) => {\n const severity = PageBannerSeverity.error;\n return new PageBannerDisplayEvent({\n severity,\n onClose: function () {\n lsSave(lsKeys.showLimitExceededBanner, 'false');\n window.dispatchEvent(new Event('storage'));\n dispatchRudderStackEvent(BannerType.Limit, BannerEvent.Close, orgId);\n },\n body: function Component() {\n return ;\n },\n });\n};\n\nconst generateK6VUhsLimitReachedBannerEvent = (orgId: number, data: BillingData, orgSlug: string) => {\n const severity = PageBannerSeverity.error;\n\n return new PageBannerDisplayEvent({\n onClose: function () {\n lsSave(lsKeys.showK6LimitReached, 'false');\n window.dispatchEvent(new Event('storage'));\n dispatchRudderStackEvent(BannerType.K6LimitReached, BannerEvent.Close, orgId);\n },\n severity,\n body: function Component() {\n return ;\n },\n });\n};\n\nconst generateFeO11YLimitReachedBannerEvent = (orgId: number, data: BillingData, orgSlug: string) => {\n const severity = PageBannerSeverity.error;\n\n return new PageBannerDisplayEvent({\n onClose: function () {\n lsSave(lsKeys.showFeO11YLimitReached, 'false');\n window.dispatchEvent(new Event('storage'));\n dispatchRudderStackEvent(BannerType.FeO11YLimitReached, BannerEvent.Close, orgId);\n },\n severity,\n body: function Component() {\n return ;\n },\n });\n};\n\nconst generateAppO11YLimitReachedBannerEvent = (orgId: number, data: BillingData, orgSlug: string) => {\n const severity = PageBannerSeverity.error;\n\n return new PageBannerDisplayEvent({\n onClose: function () {\n lsSave(lsKeys.showAppO11YLimitReached, 'false');\n window.dispatchEvent(new Event('storage'));\n dispatchRudderStackEvent(BannerType.AppO11YLimitReached, BannerEvent.Close, orgId);\n },\n severity,\n body: function Component() {\n return ;\n },\n });\n};\n\nconst generateSyntheticMonitoringLimitBannerEvent = (orgId: number, data: BillingData, orgSlug: string) => {\n const severity = PageBannerSeverity.error;\n\n return new PageBannerDisplayEvent({\n onClose: function () {\n lsSave(lsKeys.showSyntheticMonitoringLimitReached, 'false');\n window.dispatchEvent(new Event('storage'));\n dispatchRudderStackEvent(BannerType.SyntheticMonitoringLimitReached, BannerEvent.Close, orgId);\n },\n severity,\n body: function Component() {\n return ;\n },\n });\n};\n\nconst generateNotificationBanner = (\n type: BannerType,\n cloudOrgData: CloudOrgData,\n { orgSlug, orgId }: HostedDataDetails,\n billingData: BillingData\n) => {\n switch (type) {\n case BannerType.Trial:\n return generateTrialBannerEvent(getTrialEndDate(cloudOrgData), orgSlug, orgId);\n\n case BannerType.Limit:\n return generateLimitExceededBannerEvent(orgSlug, billingData, orgId);\n\n case BannerType.Free:\n return generateFreeBannerEvent(orgSlug, billingData, orgId);\n\n case BannerType.K6LimitReached:\n return generateK6VUhsLimitReachedBannerEvent(orgId, billingData, orgSlug);\n\n case BannerType.FeO11YLimitReached:\n return generateFeO11YLimitReachedBannerEvent(orgId, billingData, orgSlug);\n case BannerType.AppO11YLimitReached:\n return generateAppO11YLimitReachedBannerEvent(orgId, billingData, orgSlug);\n\n case BannerType.SyntheticMonitoringLimitReached:\n return generateSyntheticMonitoringLimitBannerEvent(orgId, billingData, orgSlug);\n\n default:\n return null;\n }\n};\n\nexport const publishBannerEvent = (\n type: BannerType,\n cloudOrgData: CloudOrgData,\n hostedDataDetails: HostedDataDetails,\n billingData: BillingData,\n appEvents: EventBus\n): boolean => {\n if (checkIfDisplayBanner(type, cloudOrgData, billingData)) {\n const bannerEvent = generateNotificationBanner(type, cloudOrgData, hostedDataDetails, billingData);\n if (bannerEvent) {\n appEvents.publish(bannerEvent);\n return true;\n }\n }\n return false;\n};\n\nexport const initPageBanner = async () => {\n try {\n await sleep(1000);\n\n const hostedDataDetails = await getHostedDataDetails();\n const cloudOrgData = await getOrgData(hostedDataDetails.orgSlug);\n const orgBillingDimensionData = await getOrgBillingDimensionsData(hostedDataDetails.orgSlug);\n const users = await getOrgUsers();\n const billingData = getBillingData(cloudOrgData, orgBillingDimensionData, users);\n const appEvents = getAppEvents();\n\n for (let i = 0; i < BannerDisplayOrder.length; i++) {\n if (publishBannerEvent(BannerDisplayOrder[i], cloudOrgData, hostedDataDetails, billingData, appEvents)) {\n break;\n }\n }\n } catch (e) {\n console.error(e);\n }\n};\n\nexport function cleanUpNotificationBanners(): void {\n localStorage.removeItem(lsKeys.showTrialBanner);\n localStorage.removeItem(lsKeys.showLimitExceededBanner);\n}\n","import { AppPlugin, AppRootProps } from '@grafana/data';\nimport { onPluginPreload } from './preload';\nimport React, { ComponentClass, lazy, Suspense } from 'react';\n// @ts-ignore\nimport packageJson from '../package.json';\nimport { LoadingPlaceholder } from '@grafana/ui';\n\nconst LazyApp = lazy(() => import('./App'));\n\nconst App = (props: AppRootProps<{}>) => (\n }>\n \n \n);\n\ninterface CloudHomeSettings {}\n\nexport const plugin = new AppPlugin().setRootPage(App as unknown as ComponentClass);\n\nonPluginPreload();\n","import { isSignedIn, isUserAdmin } from './feature/common/utils/UserUtils';\nimport {\n cleanUpNotificationBanners,\n initPageBanner,\n} from './feature/notification-banners/components/InitNotificationBanners';\n\n/*\n * Method to collect all things to execute when the plugin is preloaded.\n * Note:\n * Since this doesn't block execution, the user can freely initiate other\n * actions while this is being executed, and therefore race conditions\n * can occur.\n */\nexport function onPluginPreload(): void {\n if (isSignedIn() && isUserAdmin()) {\n initPageBanner();\n } else {\n cleanUpNotificationBanners();\n }\n}\n"],"names":["inProgress","dataWebpackPrefix","ANY","Symbol","Comparator","constructor","comp","options","parseOptions","loose","value","trim","split","join","debug","this","parse","semver","operator","version","r","re","t","COMPARATORLOOSE","COMPARATOR","m","match","TypeError","undefined","SemVer","toString","test","er","cmp","intersects","Range","includePrerelease","startsWith","includes","module","exports","safeRe","SPACE_CHARACTERS","range","raw","set","formatted","replace","map","parseRange","filter","c","length","first","isNullSet","isAny","i","comps","k","format","memoKey","FLAG_INCLUDE_PRERELEASE","FLAG_LOOSE","cached","cache","get","hr","HYPHENRANGELOOSE","HYPHENRANGE","hyphenReplace","COMPARATORTRIM","comparatorTrimReplace","TILDETRIM","tildeTrimReplace","CARETTRIM","caretTrimReplace","rangeList","parseComparator","replaceGTE0","rangeMap","Map","comparators","size","has","delete","result","values","some","thisComparators","isSatisfiable","rangeComparators","every","thisComparator","rangeComparator","testSet","remainingComparators","slice","testComparator","pop","otherComparator","replaceCarets","replaceTildes","replaceXRanges","replaceStars","isX","id","toLowerCase","replaceTilde","TILDELOOSE","TILDE","_","M","p","pr","ret","replaceCaret","CARETLOOSE","CARET","z","replaceXRange","XRANGELOOSE","XRANGE","gtlt","xM","xm","xp","anyX","STAR","GTE0PRE","GTE0","incPr","$0","from","fM","fm","fp","fpr","fb","to","tM","tm","tp","tpr","prerelease","allowed","major","minor","patch","MAX_LENGTH","MAX_SAFE_INTEGER","compareIdentifiers","LOOSE","FULL","num","build","compare","other","compareMain","comparePre","a","b","compareBuild","inc","release","identifier","identifierBase","base","Number","Error","push","isNaN","s","eq","neq","gt","gte","lt","lte","op","String","rtl","coerceRtlRegex","COERCERTLFULL","COERCERTL","next","exec","index","lastIndex","COERCEFULL","COERCE","versionA","versionB","version1","version2","v1","v2","comparison","v1Higher","highVersion","lowVersion","highHasPre","prefix","throwErrors","parsed","list","sort","v","internalRe","constants","identifiers","valid","clean","diff","rcompare","compareLoose","rsort","coerce","satisfies","toComparators","maxSatisfying","minSatisfying","minVersion","validRange","outside","gtr","ltr","simplifyRange","subset","src","tokens","SEMVER_SPEC_VERSION","RELEASE_TYPES","rcompareIdentifiers","MAX_SAFE_COMPONENT_LENGTH","MAX_SAFE_BUILD_LENGTH","process","env","NODE_DEBUG","args","console","error","numeric","anum","bnum","max","key","firstKey","keys","looseOption","Object","freeze","emptyOpts","R","LETTERDASHNUMBER","safeRegexReplacements","createToken","name","isGlobal","safe","token","makeSafeRegex","RegExp","NUMERICIDENTIFIER","NUMERICIDENTIFIERLOOSE","NONNUMERICIDENTIFIER","PRERELEASEIDENTIFIER","PRERELEASEIDENTIFIERLOOSE","BUILDIDENTIFIER","MAINVERSION","PRERELEASE","BUILD","FULLPLAIN","MAINVERSIONLOOSE","PRERELEASELOOSE","LOOSEPLAIN","XRANGEIDENTIFIER","XRANGEIDENTIFIERLOOSE","GTLT","XRANGEPLAIN","XRANGEPLAINLOOSE","COERCEPLAIN","LONETILDE","LONECARET","r1","r2","versions","maxSV","rangeObj","forEach","min","minSV","minver","setMin","comparator","compver","hilo","gtfn","ltefn","ltfn","ecomp","high","low","prev","ranges","simplified","original","minimumVersionWithPreRelease","minimumVersion","simpleSubset","sub","dom","eqSet","Set","gtltComp","higher","lower","hasDomLT","hasDomGT","higherGT","lowerLT","add","needDomLTPre","needDomGTPre","sawNonNull","OUTER","simpleSub","simpleDom","isSub","PLUGIN_ID","fetchApi","url","optionsOverride","headers","showErrorAlert","lastValueFrom","getBackendSrv","fetch","apiGet","response","method","isErrorResponse","data","thing","status","getError","e","defaultMessage","code","message","backendSrvBaseQuery","baseUrl","dataSourceName","getBaseQueryOptions","queryUrl","datasource","config","datasources","find","el","basicAuth","withCredentials","Authorization","basePath","onboarding","quickStartsBasePath","appPaths","home","quickStarts","gettingStarted","setupWizard","cloudServices","OnboardingPaths","createDashboard","docsPlugin","hostedData","linuxNode","logsOnboarding","multipleLinuxHosts","prometheus","selfHostedMetrics","setupGuide","prometheusQuickstarts","externalPaths","integrationsAndConnections","getConnectionUrl","alertRulesList","alerts","applicationObservability","applicationO11y","billingDashboard","connectionDatasources","dashboards","demoDashboards","faro","feO11Y","firingAlertRules","grafanaPlay","kubernetesCluster","k6App","k6Projects","incidents","irm","irmActiveUsers","monitorKubernetes","newAlertRules","onCall","profiles","pyroscope","syntheticMonitoringApp","syntheticMonitoringChecks","CLOUD_PLATFORM","SubscriptionCodeType","Tiers","ROLE","getContextSrv","require","isUserAdmin","hasRole","isUserViewer","isSignedIn","getContextUser","user","isAdmin","orgs","orgId","currentOrg","org","role","ADMIN","getOrgRole","excludeLocalAdmin","users","email","Action","hasAnyAccess","fallback","actions","findIndex","action","isCloudRBACRolesEnabled","hasPermission","hasAccess","isFeatureToggleEnabled","featureName","featureToggles","cloudRBACRoles","isConnectionsPreviewEnabled","isHomeSetupGuideEnabled","PLUGIN_URL","lsGet","item","localStorage","getItem","JSON","lsSave","stringify","setItem","lsRemove","removeItem","lsKeys","showFreeBanner","showTrialBanner","showLimitExceededBanner","isNewUserTestVariation","onboardingVisited","showK6LimitReached","showFeO11YLimitReached","showAppO11YLimitReached","showSyntheticMonitoringLimitReached","isConnectionsSectionPresent","buildInfo","waitForElm","selector","Promise","resolve","document","querySelector","observer","MutationObserver","mutations","disconnect","observe","body","childList","subtree","interpolateString","text","params","pattern","getOrgPlan","marketplaceSubscription","subscriptions","Disabled","tiers","activeSubscription","subscribed","isSubscribed","free","isFree","details","provider","GCPPro","GCPPending","AzurePro","AzurePending","AwsPro","AwsPending","getOrgPlanFromMarketplace","isPendingDowngrade","Pro","Free","isTrial","Trial","isPendingCancellation","PendingCancellation","isTrialUpgraded","TrialUpgraded","getContract","contractType","getTrialEndDate","current","endDate","getTrialLength","now","Date","differenceMs","Math","abs","getTime","round","orgData","product","trial","FREE","PRO","SS_ADVANCED","ADVANCED","getGreetingBasedOnTime","hours","getHours","getGrafanaDomain","host","window","location","hostname","endsWith","getMembersLink","orgSlug","domain","getSubscriptionLink","FREE_INSTANCE","orgName","type","slug","description","gateway","createdAt","createdBy","updatedAt","updatedBy","trialExpiresAt","clusterId","clusterSlug","clusterName","plan","planName","billingStartDate","billingEndDate","billingActiveUsers","billingGrafanaActiveUsers","billingOnCallActiveUsers","currentActiveUsers","currentActiveAdminUsers","currentActiveEditorUsers","currentActiveViewerUsers","dailyUserCnt","dailyAdminCnt","dailyEditorCnt","dailyViewerCnt","dashboardCnt","datasourceCnts","postgres","userQuota","dashboardQuota","alertQuota","alertCnt","ssl","customAuth","customDomain","support","runningVersion","machineLearning","incident","k6OrgId","hmInstancePromId","hmInstancePromUrl","hmInstancePromName","hmInstancePromStatus","hmInstancePromCurrentUsage","hmInstancePromCurrentActiveSeries","hmInstanceGraphiteId","hmInstanceGraphiteUrl","hmInstanceGraphiteName","hmInstanceGraphiteType","hmInstanceGraphiteStatus","hmInstanceGraphiteCurrentUsage","hlInstanceId","hlInstanceUrl","hlInstanceName","hlInstanceStatus","hlInstanceCurrentUsage","amInstanceId","amInstanceName","amInstanceUrl","amInstanceStatus","amInstanceGeneratorUrl","amInstanceGeneratorUrlDatasource","htInstanceId","htInstanceUrl","htInstanceName","htInstanceStatus","hpInstanceId","hpInstanceUrl","hpInstanceName","hpInstanceStatus","regionId","regionSlug","links","rel","href","setDate","getDate","FREE_SUBSCRIPTION","avatar","checksPerMonth","wpPlan","hgInstanceLimit","hmInstanceLimit","hlInstanceLimit","supportPlan","creditApproved","msaSignedAt","msaSignedBy","enterprisePlugins","grafanaCloud","privacy","reseller","resellerId","resellerName","emergencySupport","htUsage","hlUsage","hlRetentionUsage","hmUsage","hmGraphiteUsage","hgUsage","geUsersUsage","geInstancesUsage","k6VuhUsage","irmUsage","hpUsage","hgGrafanaUsage","hgIncludedUsers","hgPluginUsersOverageRate","hgPluginUsersIncludedUsage","hgOnCallUsage","hmCurrentUsage","hmIncludedSeries","hlIncludedUsage","hlQueryToIngestRatio","gcloudMonthlyCost","awsCustomerId","awsMarketplaceSupport","trialStartDate","trialEndDate","trialLengthDays","trialNoticeDate","cancellationDate","retainedStackId","allowGCloudTrial","pluginSignatureType","contractTypeId","hgCurrentActiveUsers","payload","publicName","hmAverageDpm","hmTier1Rate","hmTier2Min","hmTier2Rate","hmTier3Min","hmTier3Rate","hlTier1Rate","hlTier2Min","hlTier2Rate","hlTier3Min","hlTier3Rate","hgTier1Rate","hgTier2Min","hgTier2Rate","hgTier3Min","hgTier3Rate","htIncludedUsage","htTier1Rate","htTier2Min","htTier2Rate","htTier3Min","htTier3Rate","hlRetentionIncludedUsage","hlRetentionTier1Rate","hlRetentionTier2Min","hlRetentionTier2Rate","hlRetentionTier3Min","hlRetentionTier3Rate","hmGraphiteIncludedUsage","hmGraphiteTier1Rate","hmGraphiteTier2Min","hmGraphiteTier2Rate","hmGraphiteTier3Min","hmGraphiteTier3Rate","geUsersIncludedUsage","geUsersTier1Rate","geUsersTier2Min","geUsersTier2Rate","geUsersTier3Min","geUsersTier3Rate","geInstancesIncludedUsage","geInstancesTier1Rate","geInstancesTier2Min","geInstancesTier2Rate","geInstancesTier3Min","geInstancesTier3Rate","k6VuhIncludedUsage","k6VuhTier1Rate","k6VuhTier2Min","k6VuhTier2Rate","k6VuhTier3Min","k6VuhTier3Rate","k6VuhUnits","k6IPIncludedUsage","k6IPTier1Rate","k6IPTier2Min","k6IPTier2Rate","k6IPTier3Min","k6IPTier3Rate","irmStatus","irmIncludedUsage","irmTier1Rate","irmTier2Min","irmTier2Rate","irmTier3Min","irmTier3Rate","hpIncludedUsage","hpTier1Rate","hpTier2Min","hpTier2Rate","hpTier3Min","hpTier3Rate","feO11YUsage","feO11YIncludedUsage","feO11YTier1Rate","feO11YTier2Min","feO11YTier2Rate","feO11YTier3Min","feO11YTier3Rate","feO11YUnits","appO11YUsage","appO11YIncludedUsage","appO11YTier1Rate","appO11YTier2Min","appO11YTier2Rate","appO11YTier3Min","appO11YTier3Rate","appO11YUnits","smUsage","smIncludedUsage","smTier1Rate","smTier2Min","smTier2Rate","smTier3Min","smTier3Rate","smUnits","ORG_BILLING_DIMENSIONS","hg","usage","billable","hm","hl","ht","k6Vuh","hp","appO11Y","sm","getBillingData","orgBillingData","getUsageDataFromOrg","logs","MetricUnit","LOGS","metrics","METRICS","traces","TRACES","k6Metrics","K6_TESTS","FEO11Y","APPO11Y","SYNTHETIC_MONITORING","getOrgData","Cypress","baseApi","getOrgBillingDimensionsData","getOrgUsers","getHostedDataDetails","freeUserDataLimits","METRICS_FREE_INCLUDED","LOGS_FREE_INCLUDED","TRACES_FREE_INCLUDED","USERS_FREE_INCLUDED","K6_FREE_INCLUDED","FEO11Y_FREE_INCLUDED","APPO11Y_FREE_INCLUDED","SYNTHETIC_MONITORING_FREE_INCLUDED","BannerType","BannerEvent","PageBannerDisplayEvent","BusEventWithPayload","PageBannerSeverity","constructArrayToStrings","array","getLimitContent","isMetricsReached","isLogsReached","isUsersReached","isTracesReached","isFeO11yReached","isAppO11YReached","isSyntheticMonitoringReached","isOnlyUsersReached","limitContentObject","firstLine","secondLine","constructLimitContent","updateUrlParams","URL","searchParams","history","pushState","dispatchRudderStackEvent","bannerType","rudderanalytics","track","banner_type","org_id","isGrowthRoutingScreen","sleep","ms","setTimeout","BannerDisplayOrder","Limit","K6LimitReached","FeO11YLimitReached","AppO11YLimitReached","SyntheticMonitoringLimitReached","checkIfDisplayBanner","billingData","checkK6VUhsLimit","checkFeO11YUsageLimit","checkAppO11YUsageLimit","checkSyntheticMonitoringUsageLimit","isNotificationBannerVisible","cloudOrgData","CLOUD_PLATFORM_TITLES","AWS","GCP","AZURE","DEFAULT_ONBOARDING_GROUP","TestGroup","CONTROL","START_HEADER","CREATE_DASHBOARD_HEADER","TELL_US_WHAT_TO_CONNECT","MOBILE","TABLET","DESKTOP","ULTRAWIDE","getSelectAndCreateDashboardTitle","PROFILES_FREE_INCLUDED","IRM_FREE_INCLUDED","unitsByPower","formatStorageCapacity","amount","unit","precision","parsedAmount","parseFloat","baseMultiplier","getBaseMultiplier","bytes","indexOf","convertToBytes","realPower","log","floor","toFixed","formatBytes","getStorageCapacityFrom","CircleColor","displayGbShort","formatUsageValue","PROFILES","USERS","toLocaleString","handleCompactFormat","IRM","unitType","minimumFractionDigits","maximumFractionDigits","getCircleColor","limit","circleColor","GREEN","GREY","RED","getRedTooltip","metricUnit","tooltipTitle","tooltipDescription","tooltipUrl","title","getGrayTooltip","getTooltipInfo","greenTooltip","getTitles","getStatus","tooltip","link","getUsageLimitOrDefault","dimensionId","defaultLimit","orgLimit","__WEBPACK_EXTERNAL_MODULE__6089__","__WEBPACK_EXTERNAL_MODULE__7781__","__WEBPACK_EXTERNAL_MODULE__8531__","__WEBPACK_EXTERNAL_MODULE__2007__","__WEBPACK_EXTERNAL_MODULE__819__","__WEBPACK_EXTERNAL_MODULE__3734__","__WEBPACK_EXTERNAL_MODULE__3241__","__WEBPACK_EXTERNAL_MODULE__5959__","__WEBPACK_EXTERNAL_MODULE__8398__","__WEBPACK_EXTERNAL_MODULE__200__","__WEBPACK_EXTERNAL_MODULE__1159__","__WEBPACK_EXTERNAL_MODULE__7694__","__WEBPACK_EXTERNAL_MODULE__1269__","__webpack_module_cache__","__webpack_require__","moduleId","cachedModule","loaded","__webpack_modules__","call","amdO","n","getter","__esModule","d","definition","o","defineProperty","enumerable","f","chunkId","all","reduce","promises","u","g","globalThis","Function","obj","prop","prototype","hasOwnProperty","l","done","script","needAttach","scripts","getElementsByTagName","getAttribute","createElement","charset","timeout","nc","setAttribute","onScriptComplete","event","onerror","onload","clearTimeout","doneFns","parentNode","removeChild","fn","bind","target","head","appendChild","toStringTag","nmd","paths","children","installedChunks","j","installedChunkData","promise","reject","errorType","realSrc","request","webpackJsonpCallback","parentChunkLoadingFunction","chunkIds","moreModules","runtime","chunkLoadingGlobal","self","UpgradeNow","severity","styles","useStyles2","theme","severityValue","severityTextColor","colors","contrastText","css","shape","borderRadius","spacing","getStyles","onClick","Upgrade","className","FreeNotificationBanner","useEffect","data-testid","LimitExceededNotificationBanner","content","TrialNotificationBanner","expiresAt","toLocaleDateString","month","day","year","K6LimitReachedNotificationBanner","FeO11YLimitReachedNotificationBanner","AppO11YLimitReachedNotificationBanner","SyntheticMonitoringLimitNotificationBanner","publishBannerEvent","hostedDataDetails","appEvents","bannerEvent","info","onClose","dispatchEvent","Event","Close","generateTrialBannerEvent","generateLimitExceededBannerEvent","warning","generateFreeBannerEvent","generateK6VUhsLimitReachedBannerEvent","generateFeO11YLimitReachedBannerEvent","generateAppO11YLimitReachedBannerEvent","generateSyntheticMonitoringLimitBannerEvent","generateNotificationBanner","publish","initPageBanner","orgBillingDimensionData","getAppEvents","LazyApp","lazy","plugin","AppPlugin","setRootPage","props","Suspense","LoadingPlaceholder"],"sourceRoot":""}