{"version":3,"file":"caching.cjs","sources":["../../src/caching.ts"],"sourcesContent":["import { PrometheusCacheLevel } from './types';\n\n/**\n * Returns the debounce time in milliseconds based on the cache level.\n * Used to control the frequency of API requests.\n *\n * @param {PrometheusCacheLevel} cacheLevel - The cache level (None, Low, Medium, High)\n * @returns {number} Debounce time in milliseconds:\n *   - Medium: 600ms\n *   - High: 1200ms\n *   - Default (None/Low): 350ms\n */\nexport const getDebounceTimeInMilliseconds = (cacheLevel: PrometheusCacheLevel): number => {\n  switch (cacheLevel) {\n    case PrometheusCacheLevel.Medium:\n      return 600;\n    case PrometheusCacheLevel.High:\n      return 1200;\n    default:\n      return 350;\n  }\n};\n\n/**\n * Returns the number of days to cache metadata based on the cache level.\n * Used for caching Prometheus metric metadata.\n *\n * @param {PrometheusCacheLevel} cacheLevel - The cache level (None, Low, Medium, High)\n * @returns {number} Number of days to cache:\n *   - Medium: 7 days\n *   - High: 30 days\n *   - Default (None/Low): 1 day\n */\nexport const getDaysToCacheMetadata = (cacheLevel: PrometheusCacheLevel): number => {\n  switch (cacheLevel) {\n    case PrometheusCacheLevel.Medium:\n      return 7;\n    case PrometheusCacheLevel.High:\n      return 30;\n    default:\n      return 1;\n  }\n};\n\n/**\n * Returns the cache duration in minutes based on the cache level.\n * Used for general API response caching.\n *\n * @param {PrometheusCacheLevel} cacheLevel - The cache level (None, Low, Medium, High)\n * @returns Cache duration in minutes:\n *   - Medium: 10 minutes\n *   - High: 60 minutes\n *   - Default (None/Low): 1 minute\n */\nexport const getCacheDurationInMinutes = (cacheLevel: PrometheusCacheLevel) => {\n  switch (cacheLevel) {\n    case PrometheusCacheLevel.Medium:\n      return 10;\n    case PrometheusCacheLevel.High:\n      return 60;\n    default:\n      return 1;\n  }\n};\n\n/**\n * Builds cache headers for Prometheus API requests.\n * Creates a standard cache control header with private scope and max-age directive.\n *\n * @param {number} durationInSeconds - Cache duration in seconds\n * @returns Object containing headers with cache control directives:\n *   - X-Grafana-Cache: private, max-age=<duration>\n * @example\n * // Returns { headers: { 'X-Grafana-Cache': 'private, max-age=300' } }\n * buildCacheHeaders(300)\n */\nexport const buildCacheHeaders = (durationInSeconds: number) => {\n  return {\n    headers: {\n      'X-Grafana-Cache': `private, max-age=${durationInSeconds}`,\n    },\n  };\n};\n\n/**\n * Gets appropriate cache headers based on the configured cache level.\n * Converts cache duration from minutes to seconds and builds the headers.\n * Returns undefined if caching is disabled (None level).\n *\n * @param {PrometheusCacheLevel} cacheLevel - Cache level (None, Low, Medium, High)\n * @returns Cache headers object or undefined if caching is disabled\n * @example\n * // For Medium level, returns { headers: { 'X-Grafana-Cache': 'private, max-age=600' } }\n * getDefaultCacheHeaders(PrometheusCacheLevel.Medium)\n */\nexport const getDefaultCacheHeaders = (cacheLevel: PrometheusCacheLevel) => {\n  if (cacheLevel !== PrometheusCacheLevel.None) {\n    return buildCacheHeaders(getCacheDurationInMinutes(cacheLevel) * 60);\n  }\n  return;\n};\n"],"names":["PrometheusCacheLevel"],"mappings":";;;;;;;AAYO,MAAM,6BAAA,GAAgC,CAAC,UAAA,KAA6C;AACzF,EAAA,QAAQ,UAAA;AAAY,IAClB,KAAKA,0BAAA,CAAqB,MAAA;AACxB,MAAA,OAAO,GAAA;AAAA,IACT,KAAKA,0BAAA,CAAqB,IAAA;AACxB,MAAA,OAAO,IAAA;AAAA,IACT;AACE,MAAA,OAAO,GAAA;AAAA;AAEb;AAYO,MAAM,sBAAA,GAAyB,CAAC,UAAA,KAA6C;AAClF,EAAA,QAAQ,UAAA;AAAY,IAClB,KAAKA,0BAAA,CAAqB,MAAA;AACxB,MAAA,OAAO,CAAA;AAAA,IACT,KAAKA,0BAAA,CAAqB,IAAA;AACxB,MAAA,OAAO,EAAA;AAAA,IACT;AACE,MAAA,OAAO,CAAA;AAAA;AAEb;AAYO,MAAM,yBAAA,GAA4B,CAAC,UAAA,KAAqC;AAC7E,EAAA,QAAQ,UAAA;AAAY,IAClB,KAAKA,0BAAA,CAAqB,MAAA;AACxB,MAAA,OAAO,EAAA;AAAA,IACT,KAAKA,0BAAA,CAAqB,IAAA;AACxB,MAAA,OAAO,EAAA;AAAA,IACT;AACE,MAAA,OAAO,CAAA;AAAA;AAEb;AAaO,MAAM,iBAAA,GAAoB,CAAC,iBAAA,KAA8B;AAC9D,EAAA,OAAO;AAAA,IACL,OAAA,EAAS;AAAA,MACP,iBAAA,EAAmB,oBAAoB,iBAAiB,CAAA;AAAA;AAC1D,GACF;AACF;AAaO,MAAM,sBAAA,GAAyB,CAAC,UAAA,KAAqC;AAC1E,EAAA,IAAI,UAAA,KAAeA,2BAAqB,IAAA,EAAM;AAC5C,IAAA,OAAO,iBAAA,CAAkB,yBAAA,CAA0B,UAAU,CAAA,GAAI,EAAE,CAAA;AAAA,EACrE;AACA,EAAA;AACF;;;;;;;;"}