{"version":3,"file":"normalize-usage-chart-query.mjs","names":[],"sources":["../../../../src/services/ai/helpers/normalize-usage-chart-query.ts"],"sourcesContent":["import type { GetUsageChartQueryParams } from \"../../../schemas/ai.js\";\nimport type {\n\tAiUsageChartDimension,\n\tAiUsageChartMetric,\n} from \"../../../types/response.js\";\nimport { addDays, getDateKey, parseDateKey } from \"./date-helpers.js\";\n\nconst defaultMetric: AiUsageChartMetric = \"totalTokens\";\nconst defaultDimension: AiUsageChartDimension = \"day\";\nconst supportedMetrics: AiUsageChartMetric[] = [\n\t\"requests\",\n\t\"totalTokens\",\n\t\"cost\",\n];\n\nconst isSupportedMetric = (value: string): value is AiUsageChartMetric =>\n\tsupportedMetrics.includes(value as AiUsageChartMetric);\n\n/**\n * Applies usage chart defaults and validates the requested range before the\n * service hits the repository.\n */\nconst normalizeUsageChartQuery = (query: GetUsageChartQueryParams) => {\n\tconst defaultEnd = parseDateKey(getDateKey(new Date())) as Date;\n\tconst defaultStart = addDays(defaultEnd, -13);\n\tconst end = query.endDate ? parseDateKey(query.endDate) : defaultEnd;\n\tconst start = query.startDate ? parseDateKey(query.startDate) : defaultStart;\n\n\tif (!start || !end || start.getTime() > end.getTime()) return null;\n\n\tconst metrics = (query.metric ?? defaultMetric)\n\t\t.split(\",\")\n\t\t.map((metric) => metric.trim())\n\t\t.filter(isSupportedMetric);\n\tconst uniqueMetrics =\n\t\tmetrics.length > 0 ? Array.from(new Set(metrics)) : [defaultMetric];\n\n\treturn {\n\t\tdimension: query.dimension ?? defaultDimension,\n\t\tmetrics: uniqueMetrics,\n\t\tstart,\n\t\tend,\n\t\tendExclusive: addDays(end, 1),\n\t\tfeatureKey: query[\"filter[featureKey]\"]?.trim() || undefined,\n\t};\n};\n\nexport default normalizeUsageChartQuery;\n"],"mappings":"+EAOA,MAAM,EAAoC,cAEpC,EAAyC,CAC9C,WACA,cACA,MACD,EAEM,EAAqB,GAC1B,EAAiB,SAAS,CAA2B,EAMhD,EAA4B,GAAoC,CACrE,IAAM,EAAa,EAAa,EAAW,IAAI,IAAM,CAAC,EAChD,EAAe,EAAQ,EAAY,GAAG,EACtC,EAAM,EAAM,QAAU,EAAa,EAAM,OAAO,EAAI,EACpD,EAAQ,EAAM,UAAY,EAAa,EAAM,SAAS,EAAI,EAEhE,GAAI,CAAC,GAAS,CAAC,GAAO,EAAM,QAAQ,EAAI,EAAI,QAAQ,EAAG,OAAO,KAE9D,IAAM,GAAW,EAAM,QAAU,EAAA,CAC/B,MAAM,GAAG,CAAC,CACV,IAAK,GAAW,EAAO,KAAK,CAAC,CAAC,CAC9B,OAAO,CAAiB,EACpB,EACL,EAAQ,OAAS,EAAI,MAAM,KAAK,IAAI,IAAI,CAAO,CAAC,EAAI,CAAC,CAAa,EAEnE,MAAO,CACN,UAAW,EAAM,WAAa,MAC9B,QAAS,EACT,QACA,MACA,aAAc,EAAQ,EAAK,CAAC,EAC5B,WAAY,EAAM,qBAAqB,EAAE,KAAK,GAAK,IAAA,EACpD,CACD"}