@kong-ui-public/analytics-metric-provider 10.1.20 → 10.1.21-pr.2603.c77a00164.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1,12 +1,12 @@
1
- import { ref as H, watchEffect as Fe, computed as g, getCurrentInstance as xe, reactive as qe, onMounted as Ue, onUnmounted as ze, watch as Ke, isReadonly as Pe, toRefs as $e, defineComponent as Q, inject as Se, toRef as X, provide as Be, renderSlot as Ie, resolveComponent as Ae, createElementBlock as S, openBlock as T, normalizeClass as K, createElementVNode as x, createCommentVNode as V, createBlock as q, unref as _, resolveDynamicComponent as re, withCtx as ye, createTextVNode as De, toDisplayString as w, createVNode as M, Fragment as he, renderList as Xe, mergeProps as Ge, normalizeProps as je, guardReactiveProps as He } from "vue";
2
- import { stripUnknownFilters as Ye, TimeframeKeys as se, queryableExploreDimensions as Qe, TimePeriods as be, DeltaQueryTime as We, UnaryQueryTime as Je } from "@kong-ui-public/analytics-utilities";
3
- import { createI18n as Ze, i18nTComponent as er } from "@kong-ui-public/i18n";
1
+ import { ref as Y, watchEffect as ke, computed as p, getCurrentInstance as Me, reactive as Fe, onMounted as xe, onUnmounted as qe, watch as Ue, isReadonly as Pe, toRefs as $e, defineComponent as W, inject as Ce, toRef as G, provide as ze, renderSlot as Se, resolveComponent as Ie, createElementBlock as S, openBlock as T, normalizeClass as z, createElementVNode as q, createCommentVNode as V, createBlock as U, unref as C, resolveDynamicComponent as re, withCtx as me, createTextVNode as Ae, toDisplayString as w, createVNode as F, Fragment as ge, renderList as Ke, mergeProps as Be, normalizeProps as Xe, guardReactiveProps as Ge } from "vue";
2
+ import { stripUnknownFilters as je, queryableExploreDimensions as He } from "@kong-ui-public/analytics-utilities";
3
+ import { createI18n as Ye, i18nTComponent as Qe } from "@kong-ui-public/i18n";
4
4
  import "axios";
5
- import { useAnalyticsConfigStore as rr } from "@kong-ui-public/analytics-config-store";
6
- import { TrendUpIcon as tr, TrendDownIcon as nr, IndeterminateSmallIcon as we, VitalsIcon as ar, CloudUploadIcon as ir, WarningOutlineIcon as or, ResponseIcon as sr, InfoIcon as ur, WarningIcon as Oe, EqualIcon as lr } from "@kong/icons";
7
- const cr = {
5
+ import { useAnalyticsConfigStore as We } from "@kong-ui-public/analytics-config-store";
6
+ import { TrendUpIcon as Je, TrendDownIcon as Ze, IndeterminateSmallIcon as De, VitalsIcon as er, CloudUploadIcon as rr, WarningOutlineIcon as tr, ResponseIcon as nr, InfoIcon as ar, WarningIcon as be, EqualIcon as ir } from "@kong/icons";
7
+ const or = {
8
8
  notAvailable: "N/A"
9
- }, dr = {
9
+ }, sr = {
10
10
  small: {
11
11
  traffic: "Requests",
12
12
  errorRate: "Error rate",
@@ -25,7 +25,7 @@ const cr = {
25
25
  averageLatency: "Average latency",
26
26
  p99Latency: "P99 latency"
27
27
  }
28
- }, fr = {
28
+ }, ur = {
29
29
  custom_days: "vs previous {numDays, plural, =1 {day} other {# days}}",
30
30
  custom_hours: "vs previous {numHours, plural, =1 {hour} other {# hours}}",
31
31
  custom_minutes: "vs previous {numMinutes, plural, =1 {minute} other {# minutes}}",
@@ -42,32 +42,32 @@ const cr = {
42
42
  previous_week: "vs previous time period",
43
43
  previous_month: "vs previous time period",
44
44
  previous_quarter: "vs previous quarter"
45
- }, vr = {
46
- general: cr,
47
- metricCard: dr,
48
- trendRange: fr
45
+ }, lr = {
46
+ general: or,
47
+ metricCard: sr,
48
+ trendRange: ur
49
49
  };
50
- function mr() {
51
- const e = Ze("en-us", vr);
50
+ function cr() {
51
+ const e = Ye("en-us", lr);
52
52
  return {
53
53
  i18n: e,
54
- i18nT: er(e)
54
+ i18nT: Qe(e)
55
55
  // Translation component <i18n-t>
56
56
  };
57
57
  }
58
- const yr = 2, $ = ["1XX", "2XX", "3XX", "4XX", "5XX"], ge = ["4XX", "5XX"], pt = ["1XX", "2XX", "3XX"], hr = 30 * 1e3, gr = "analytics-query-provider";
59
- var Le = /* @__PURE__ */ ((e) => (e.VALIDATING = "VALIDATING", e.VALIDATING_HAS_DATA = "VALIDATING_HAS_DATA", e.PENDING = "PENDING", e.SUCCESS = "SUCCESS", e.SUCCESS_HAS_DATA = "SUCCESS_HAS_DATA", e.ERROR = "ERROR", e.STALE_IF_ERROR = "STALE_IF_ERROR", e))(Le || {});
60
- const pr = (e) => {
58
+ const dr = 2, B = ["1XX", "2XX", "3XX", "4XX", "5XX"], ye = ["4XX", "5XX"], mt = ["1XX", "2XX", "3XX"], fr = 30 * 1e3, vr = "analytics-query-provider";
59
+ var we = /* @__PURE__ */ ((e) => (e.VALIDATING = "VALIDATING", e.VALIDATING_HAS_DATA = "VALIDATING_HAS_DATA", e.PENDING = "PENDING", e.SUCCESS = "SUCCESS", e.SUCCESS_HAS_DATA = "SUCCESS_HAS_DATA", e.ERROR = "ERROR", e.STALE_IF_ERROR = "STALE_IF_ERROR", e))(we || {});
60
+ const mr = (e) => {
61
61
  var r, t, o, a, n;
62
62
  return e ? !!// TODO: revisit: currently only the first check ever matters?
63
63
  ((r = Object.keys(e)) != null && r.length || (t = e.data) != null && t.length || (a = (o = e.data) == null ? void 0 : o.data) != null && a.length || !((n = e.data) != null && n.data) && typeof e.data == "object" && Object.keys(e == null ? void 0 : e.data).length) : !1;
64
64
  };
65
- function Rr(e = H({}), r, t, o = pr) {
66
- const a = H(
65
+ function gr(e = Y({}), r, t, o = mr) {
66
+ const a = Y(
67
67
  "PENDING"
68
68
  /* PENDING */
69
69
  );
70
- return Fe(() => {
70
+ return ke(() => {
71
71
  const n = o(e.value);
72
72
  if (e.value && n && t.value) {
73
73
  a.value = "VALIDATING_HAS_DATA";
@@ -96,47 +96,47 @@ function Rr(e = H({}), r, t, o = pr) {
96
96
  e.value === void 0 && r && (a.value = "ERROR");
97
97
  }), {
98
98
  state: a,
99
- swrvState: Le
99
+ swrvState: we
100
100
  };
101
101
  }
102
- const L = Symbol("default"), te = "status_code_grouped", pe = (e, r, t, o, a) => {
102
+ const L = Symbol("default"), te = "status_code_grouped", he = (e, r, t, o, a) => {
103
103
  e[r][t] || (e[r][t] = {}), e[r][t][o] = a;
104
104
  };
105
- function Tr(e, r) {
106
- var c;
107
- const t = ((c = e.meta.metric_names) == null ? void 0 : c[0]) || "", o = e.meta.start_ms, a = Object.keys(e.meta.display || {}), n = !!a.find((f) => f === te), l = a.find((f) => f !== te);
105
+ function yr(e, r) {
106
+ var d;
107
+ const t = ((d = e.meta.metric_names) == null ? void 0 : d[0]) || "", o = e.meta.start_ms, a = Object.keys(e.meta.display || {}), n = !!a.find((f) => f === te), u = a.find((f) => f !== te);
108
108
  return a.length > 2 || a.length > 1 && !n ? (console.error("Don't know how to work with provided dimensions:", a), {
109
109
  previous: { [L]: { [L]: 0 } },
110
110
  current: { [L]: { [L]: 0 } }
111
111
  }) : e.data.reduce((f, i) => {
112
- const s = i.event[t], u = l ? i.event[l] : L, d = n ? i.event[te] : L;
113
- return new Date(i.timestamp).getTime() === o && r ? pe(f, "previous", u, d, s) : pe(f, "current", u, d, s), f;
112
+ const s = i.event[t], l = u ? i.event[u] : L, c = n ? i.event[te] : L;
113
+ return new Date(i.timestamp).getTime() === o && r ? he(f, "previous", l, c, s) : he(f, "current", l, c, s), f;
114
114
  }, {
115
115
  previous: {},
116
116
  current: {}
117
117
  });
118
118
  }
119
- function Er(e) {
120
- e.queryReady === void 0 && (e.queryReady = g(() => !0));
121
- const { i18n: r } = N.useI18n(), t = g(() => {
122
- var u, d;
119
+ function hr(e) {
120
+ e.queryReady === void 0 && (e.queryReady = p(() => !0));
121
+ const { i18n: r } = M.useI18n(), t = p(() => {
122
+ var l, c;
123
123
  return {
124
124
  metrics: e.metrics.value,
125
125
  dimensions: [
126
- ...(u = e.dimensions) != null && u.length ? [...e.dimensions] : [],
126
+ ...(l = e.dimensions) != null && l.length ? [...e.dimensions] : [],
127
127
  ...e.withTrend.value ? ["time"] : []
128
128
  ],
129
129
  granularity: e.withTrend.value ? "trend" : void 0,
130
- ...(d = e.filter.value) != null && d.length ? { filters: e.filter.value } : {},
131
- time_range: e.timeframe.value.v4Query(e.tz.value)
130
+ ...(c = e.filter.value) != null && c.length ? { filters: e.filter.value } : {},
131
+ time_range: e.timeRange.value
132
132
  };
133
- }), o = g(() => {
134
- var d, v, h, R;
135
- if (!((d = e.queryReady) != null && d.value))
133
+ }), o = p(() => {
134
+ var c, v, h, R;
135
+ if (!((c = e.queryReady) != null && c.value))
136
136
  return null;
137
- const u = (v = e.filter) != null && v.value ? JSON.stringify(e.filter.value) : "";
138
- return `metric-fetcher-${e.timeframe.value.cacheKey()}-${(h = e.dimensions) == null ? void 0 : h.join("-")}-${(R = e.metrics.value) == null ? void 0 : R.join("-")}-${u}-${e.refreshCounter.value}`;
139
- }), { response: a, error: n, isValidating: l } = N.useRequest(
137
+ const l = (v = e.filter) != null && v.value ? JSON.stringify(e.filter.value) : "";
138
+ return `metric-fetcher-${JSON.stringify(e.timeRange.value)}-${(h = e.dimensions) == null ? void 0 : h.join("-")}-${(R = e.metrics.value) == null ? void 0 : R.join("-")}-${l}-${e.refreshCounter.value}`;
139
+ }), { response: a, error: n, isValidating: u } = M.useRequest(
140
140
  () => o.value,
141
141
  () => e.queryFn({
142
142
  // TODO: Use a type guard to validate that if the datasource is basic,
@@ -147,54 +147,54 @@ function Er(e) {
147
147
  {
148
148
  refreshInterval: e.refreshInterval,
149
149
  revalidateOnFocus: !1,
150
- errorRetryCount: yr
150
+ errorRetryCount: dr
151
151
  }
152
- ), { state: c, swrvState: f } = Rr(a, n, l), i = g(() => {
153
- var u, d, v, h, R, m, E;
154
- return !((d = (u = a.value) == null ? void 0 : u.data) != null && d.length) || !((h = (v = a.value) == null ? void 0 : v.meta) != null && h.display) || !((E = (m = (R = a.value) == null ? void 0 : R.meta) == null ? void 0 : m.metric_names) != null && E.length) ? { current: {}, previous: {} } : Tr(a.value, e.withTrend.value);
155
- }), s = g(() => {
156
- var u, d;
157
- if (e.timeframe.value.key === "custom") {
158
- if (!((d = (u = a.value) == null ? void 0 : u.meta) != null && d.start_ms))
152
+ ), { state: d, swrvState: f } = gr(a, n, u), i = p(() => {
153
+ var l, c, v, h, R, y, _;
154
+ return !((c = (l = a.value) == null ? void 0 : l.data) != null && c.length) || !((h = (v = a.value) == null ? void 0 : v.meta) != null && h.display) || !((_ = (y = (R = a.value) == null ? void 0 : R.meta) == null ? void 0 : y.metric_names) != null && _.length) ? { current: {}, previous: {} } : yr(a.value, e.withTrend.value);
155
+ }), s = p(() => {
156
+ var l, c;
157
+ if (e.timeRange.value.type === "absolute") {
158
+ if (!((c = (l = a.value) == null ? void 0 : l.meta) != null && c.start_ms))
159
159
  return "";
160
160
  const { start_ms: v, end_ms: h } = a.value.meta;
161
- let R = (h - v) / (1e3 * 60 * 60 * 24), m = (h - v) / (1e3 * 60 * 60), E = (h - v) / (1e3 * 60);
162
- return e.withTrend.value && (R /= 2, m /= 2, E /= 2), R >= 1 ? r.t("trendRange.custom_days", { numDays: Math.round(R) }) : m >= 1 ? r.t("trendRange.custom_hours", { numHours: Math.round(m) }) : E >= 1 ? r.t("trendRange.custom_minutes", { numMinutes: Math.round(E) }) : r.t("trendRange.custom_days", { numDays: Math.round(R) });
161
+ let R = (h - v) / (1e3 * 60 * 60 * 24), y = (h - v) / (1e3 * 60 * 60), _ = (h - v) / (1e3 * 60);
162
+ return e.withTrend.value && (R /= 2, y /= 2, _ /= 2), R >= 1 ? r.t("trendRange.custom_days", { numDays: Math.round(R) }) : y >= 1 ? r.t("trendRange.custom_hours", { numHours: Math.round(y) }) : _ >= 1 ? r.t("trendRange.custom_minutes", { numMinutes: Math.round(_) }) : r.t("trendRange.custom_days", { numDays: Math.round(R) });
163
163
  } else
164
- return e.withTrend.value ? r.t(`trendRange.${e.timeframe.value.key}`) : "";
164
+ return e.withTrend.value ? r.t(`trendRange.${e.timeRange.value.time_range}`) : "";
165
165
  });
166
166
  return {
167
- isLoading: g(() => f.PENDING === c.value),
168
- hasError: g(() => f.ERROR === c.value),
167
+ isLoading: p(() => f.PENDING === d.value),
168
+ hasError: p(() => f.ERROR === d.value),
169
169
  raw: a,
170
170
  mapped: i,
171
171
  trendRange: s
172
172
  };
173
173
  }
174
- const P = (e, r, t = L, o) => (o ?? [L]).reduce((n, l) => {
175
- const c = e[r][t];
176
- return c ? n + (c[l] || 0) : n;
174
+ const K = (e, r, t = L, o) => (o ?? [L]).reduce((n, u) => {
175
+ const d = e[r][t];
176
+ return d ? n + (d[u] || 0) : n;
177
177
  }, 0);
178
- function _r(e) {
178
+ function pr(e) {
179
179
  const {
180
180
  cardType: r,
181
181
  title: t,
182
182
  description: o,
183
183
  record: a,
184
184
  hasError: n,
185
- increaseIsBad: l,
186
- formatValueFn: c,
185
+ increaseIsBad: u,
186
+ formatValueFn: d,
187
187
  trendRange: f
188
188
  } = e;
189
- return g(() => {
189
+ return p(() => {
190
190
  let i = 0, s = 0;
191
191
  if (a != null && a.value)
192
192
  try {
193
- i = P(a.value, "current", e.lookupKey, e.sumGroupedValues), s = P(a.value, "previous", e.lookupKey, e.sumGroupedValues);
194
- } catch (u) {
193
+ i = K(a.value, "current", e.lookupKey, e.sumGroupedValues), s = K(a.value, "previous", e.lookupKey, e.sumGroupedValues);
194
+ } catch (l) {
195
195
  console.error(
196
196
  "Metric card data doesn't have the expected structure:",
197
- u
197
+ l
198
198
  );
199
199
  }
200
200
  return {
@@ -204,76 +204,76 @@ function _r(e) {
204
204
  previousValue: s,
205
205
  title: t.value,
206
206
  description: o,
207
- increaseIsBad: !!l,
207
+ increaseIsBad: !!u,
208
208
  // Coerce undefined to false
209
- formatValueFn: c,
209
+ formatValueFn: d,
210
210
  trendRange: f == null ? void 0 : f.value
211
211
  };
212
212
  });
213
213
  }
214
- var ne = /* @__PURE__ */ new WeakMap(), Re = 0;
215
- function Cr(e) {
214
+ var ne = /* @__PURE__ */ new WeakMap(), pe = 0;
215
+ function Rr(e) {
216
216
  if (!e.length)
217
217
  return "";
218
218
  for (var r = "arg", t = 0; t < e.length; ++t) {
219
219
  var o = void 0;
220
- e[t] === null || typeof e[t] != "object" && typeof e[t] != "function" ? typeof e[t] == "string" ? o = '"' + e[t] + '"' : o = String(e[t]) : ne.has(e[t]) ? o = ne.get(e[t]) : (o = Re, ne.set(e[t], Re++)), r += "@" + o;
220
+ e[t] === null || typeof e[t] != "object" && typeof e[t] != "function" ? typeof e[t] == "string" ? o = '"' + e[t] + '"' : o = String(e[t]) : ne.has(e[t]) ? o = ne.get(e[t]) : (o = pe, ne.set(e[t], pe++)), r += "@" + o;
221
221
  }
222
222
  return r;
223
223
  }
224
- function Sr(e) {
224
+ function Tr(e) {
225
225
  if (typeof e == "function")
226
226
  try {
227
227
  e = e();
228
228
  } catch {
229
229
  e = "";
230
230
  }
231
- return Array.isArray(e) ? e = Cr(e) : e = String(e || ""), e;
231
+ return Array.isArray(e) ? e = Rr(e) : e = String(e || ""), e;
232
232
  }
233
- var ue = (
233
+ var se = (
234
234
  /** @class */
235
235
  function() {
236
236
  function e(r) {
237
237
  r === void 0 && (r = 0), this.items = /* @__PURE__ */ new Map(), this.ttl = r;
238
238
  }
239
239
  return e.prototype.serializeKey = function(r) {
240
- return Sr(r);
240
+ return Tr(r);
241
241
  }, e.prototype.get = function(r) {
242
242
  var t = this.serializeKey(r);
243
243
  return this.items.get(t);
244
244
  }, e.prototype.set = function(r, t, o) {
245
- var a = this.serializeKey(r), n = o || this.ttl, l = Date.now(), c = {
245
+ var a = this.serializeKey(r), n = o || this.ttl, u = Date.now(), d = {
246
246
  data: t,
247
- createdAt: l,
248
- expiresAt: n ? l + n : 1 / 0
247
+ createdAt: u,
248
+ expiresAt: n ? u + n : 1 / 0
249
249
  };
250
- this.dispatchExpire(n, c, a), this.items.set(a, c);
250
+ this.dispatchExpire(n, d, a), this.items.set(a, d);
251
251
  }, e.prototype.dispatchExpire = function(r, t, o) {
252
252
  var a = this;
253
253
  r && setTimeout(function() {
254
- var n = Date.now(), l = n >= t.expiresAt;
255
- l && a.delete(o);
254
+ var n = Date.now(), u = n >= t.expiresAt;
255
+ u && a.delete(o);
256
256
  }, r);
257
257
  }, e.prototype.delete = function(r) {
258
258
  this.items.delete(r);
259
259
  }, e;
260
260
  }()
261
261
  );
262
- function Ir() {
262
+ function Er() {
263
263
  return typeof navigator.onLine < "u" ? navigator.onLine : !0;
264
264
  }
265
- function Ar() {
265
+ function _r() {
266
266
  return typeof document < "u" && typeof document.visibilityState < "u" ? document.visibilityState !== "hidden" : !0;
267
267
  }
268
- var Dr = function(e) {
268
+ var Cr = function(e) {
269
269
  return fetch(e).then(function(r) {
270
270
  return r.json();
271
271
  });
272
272
  };
273
273
  const ae = {
274
- isOnline: Ir,
275
- isDocumentVisible: Ar,
276
- fetcher: Dr
274
+ isOnline: Er,
275
+ isDocumentVisible: _r,
276
+ fetcher: Cr
277
277
  };
278
278
  var b = function() {
279
279
  return b = Object.assign || function(e) {
@@ -283,41 +283,41 @@ var b = function() {
283
283
  }
284
284
  return e;
285
285
  }, b.apply(this, arguments);
286
- }, U = function(e, r, t, o) {
286
+ }, P = function(e, r, t, o) {
287
287
  function a(n) {
288
- return n instanceof t ? n : new t(function(l) {
289
- l(n);
288
+ return n instanceof t ? n : new t(function(u) {
289
+ u(n);
290
290
  });
291
291
  }
292
- return new (t || (t = Promise))(function(n, l) {
293
- function c(s) {
292
+ return new (t || (t = Promise))(function(n, u) {
293
+ function d(s) {
294
294
  try {
295
295
  i(o.next(s));
296
- } catch (u) {
297
- l(u);
296
+ } catch (l) {
297
+ u(l);
298
298
  }
299
299
  }
300
300
  function f(s) {
301
301
  try {
302
302
  i(o.throw(s));
303
- } catch (u) {
304
- l(u);
303
+ } catch (l) {
304
+ u(l);
305
305
  }
306
306
  }
307
307
  function i(s) {
308
- s.done ? n(s.value) : a(s.value).then(c, f);
308
+ s.done ? n(s.value) : a(s.value).then(d, f);
309
309
  }
310
310
  i((o = o.apply(e, r || [])).next());
311
311
  });
312
- }, z = function(e, r) {
312
+ }, $ = function(e, r) {
313
313
  var t = { label: 0, sent: function() {
314
314
  if (n[0] & 1) throw n[1];
315
315
  return n[1];
316
- }, trys: [], ops: [] }, o, a, n, l;
317
- return l = { next: c(0), throw: c(1), return: c(2) }, typeof Symbol == "function" && (l[Symbol.iterator] = function() {
316
+ }, trys: [], ops: [] }, o, a, n, u;
317
+ return u = { next: d(0), throw: d(1), return: d(2) }, typeof Symbol == "function" && (u[Symbol.iterator] = function() {
318
318
  return this;
319
- }), l;
320
- function c(i) {
319
+ }), u;
320
+ function d(i) {
321
321
  return function(s) {
322
322
  return f([i, s]);
323
323
  };
@@ -368,28 +368,28 @@ var b = function() {
368
368
  if (i[0] & 5) throw i[1];
369
369
  return { value: i[0] ? i[1] : void 0, done: !0 };
370
370
  }
371
- }, br = function(e, r) {
371
+ }, Sr = function(e, r) {
372
372
  var t = typeof Symbol == "function" && e[Symbol.iterator];
373
373
  if (!t) return e;
374
- var o = t.call(e), a, n = [], l;
374
+ var o = t.call(e), a, n = [], u;
375
375
  try {
376
376
  for (; (r === void 0 || r-- > 0) && !(a = o.next()).done; ) n.push(a.value);
377
- } catch (c) {
378
- l = { error: c };
377
+ } catch (d) {
378
+ u = { error: d };
379
379
  } finally {
380
380
  try {
381
381
  a && !a.done && (t = o.return) && t.call(o);
382
382
  } finally {
383
- if (l) throw l.error;
383
+ if (u) throw u.error;
384
384
  }
385
385
  }
386
386
  return n;
387
- }, wr = function(e, r, t) {
387
+ }, Ir = function(e, r, t) {
388
388
  if (t || arguments.length === 2) for (var o = 0, a = r.length, n; o < a; o++)
389
389
  (n || !(o in r)) && (n || (n = Array.prototype.slice.call(r, 0, o)), n[o] = r[o]);
390
390
  return e.concat(n || Array.prototype.slice.call(r));
391
- }, Ve = new ue(), Y = new ue(), ie = new ue(), ke = {
392
- cache: Ve,
391
+ }, Oe = new se(), Q = new se(), ie = new se(), Le = {
392
+ cache: Oe,
393
393
  refreshInterval: 0,
394
394
  ttl: 0,
395
395
  serverTTL: 1e3,
@@ -403,16 +403,16 @@ var b = function() {
403
403
  isOnline: ae.isOnline,
404
404
  isDocumentVisible: ae.isDocumentVisible
405
405
  };
406
- function Or(e, r, t) {
407
- var o = Y.get(e);
406
+ function Ar(e, r, t) {
407
+ var o = Q.get(e);
408
408
  if (o)
409
409
  o.data.push(r);
410
410
  else {
411
411
  var a = 5e3;
412
- Y.set(e, [r], t > 0 ? t + a : t);
412
+ Q.set(e, [r], t > 0 ? t + a : t);
413
413
  }
414
414
  }
415
- function Lr(e, r, t) {
415
+ function Dr(e, r, t) {
416
416
  if (t.isDocumentVisible() && !(t.errorRetryCount !== void 0 && r > t.errorRetryCount)) {
417
417
  var o = Math.min(r || 0, t.errorRetryCount), a = o * t.errorRetryInterval;
418
418
  setTimeout(function() {
@@ -420,35 +420,35 @@ function Lr(e, r, t) {
420
420
  }, a);
421
421
  }
422
422
  }
423
- var Te = function(e, r, t, o) {
424
- return t === void 0 && (t = Ve), o === void 0 && (o = ke.ttl), U(void 0, void 0, void 0, function() {
425
- var a, n, l, c, f, i, s;
426
- return z(this, function(u) {
427
- switch (u.label) {
423
+ var Re = function(e, r, t, o) {
424
+ return t === void 0 && (t = Oe), o === void 0 && (o = Le.ttl), P(void 0, void 0, void 0, function() {
425
+ var a, n, u, d, f, i, s;
426
+ return $(this, function(l) {
427
+ switch (l.label) {
428
428
  case 0:
429
- if (!kr(r)) return [3, 5];
430
- u.label = 1;
429
+ if (!wr(r)) return [3, 5];
430
+ l.label = 1;
431
431
  case 1:
432
- return u.trys.push([1, 3, , 4]), [4, r];
432
+ return l.trys.push([1, 3, , 4]), [4, r];
433
433
  case 2:
434
- return a = u.sent(), [3, 4];
434
+ return a = l.sent(), [3, 4];
435
435
  case 3:
436
- return c = u.sent(), n = c, [3, 4];
436
+ return d = l.sent(), n = d, [3, 4];
437
437
  case 4:
438
438
  return [3, 6];
439
439
  case 5:
440
- a = r, u.label = 6;
440
+ a = r, l.label = 6;
441
441
  case 6:
442
- if (l = !1, f = { data: a, error: n, isValidating: l }, typeof a < "u")
442
+ if (u = !1, f = { data: a, error: n, isValidating: u }, typeof a < "u")
443
443
  try {
444
444
  t.set(e, f, o);
445
- } catch (d) {
446
- console.error("swrv(mutate): failed to set cache", d);
445
+ } catch (c) {
446
+ console.error("swrv(mutate): failed to set cache", c);
447
447
  }
448
- return i = Y.get(e), i && i.data.length && (s = i.data.filter(function(d) {
449
- return d.key === e;
450
- }), s.forEach(function(d, v) {
451
- typeof f.data < "u" && (d.data = f.data), d.error = f.error, d.isValidating = f.isValidating, d.isLoading = f.isValidating;
448
+ return i = Q.get(e), i && i.data.length && (s = i.data.filter(function(c) {
449
+ return c.key === e;
450
+ }), s.forEach(function(c, v) {
451
+ typeof f.data < "u" && (c.data = f.data), c.error = f.error, c.isValidating = f.isValidating, c.isLoading = f.isValidating;
452
452
  var h = v === s.length - 1;
453
453
  h || delete s[v];
454
454
  }), s = s.filter(Boolean)), [2, f];
@@ -456,63 +456,63 @@ var Te = function(e, r, t, o) {
456
456
  });
457
457
  });
458
458
  };
459
- function Vr() {
459
+ function br() {
460
460
  for (var e = this, r = [], t = 0; t < arguments.length; t++)
461
461
  r[t] = arguments[t];
462
- var o, a, n = b({}, ke), l = !1, c = !1, f = xe(), i = (f == null ? void 0 : f.proxy) || f;
462
+ var o, a, n = b({}, Le), u = !1, d = !1, f = Me(), i = (f == null ? void 0 : f.proxy) || f;
463
463
  if (!i)
464
464
  return console.error("Could not get current instance, check to make sure that `useSwrv` is declared in the top level of the setup function."), null;
465
465
  var s = (i == null ? void 0 : i.$isServer) || !1;
466
466
  r.length >= 1 && (o = r[0]), r.length >= 2 && (a = r[1]), r.length > 2 && (n = b(b({}, n), r[2]));
467
- var u = s ? n.serverTTL : n.ttl, d = typeof o == "function" ? o : H(o);
467
+ var l = s ? n.serverTTL : n.ttl, c = typeof o == "function" ? o : Y(o);
468
468
  typeof a > "u" && (a = n.fetcher);
469
469
  var v = null;
470
- v || (v = qe({
470
+ v || (v = Fe({
471
471
  data: void 0,
472
472
  error: void 0,
473
473
  isValidating: !0,
474
474
  isLoading: !0,
475
475
  key: null
476
476
  }));
477
- var h = function(p, y) {
478
- return U(e, void 0, void 0, function() {
479
- var I, C, A, F, W, de, J, fe = this;
480
- return z(this, function(Z) {
477
+ var h = function(m, g) {
478
+ return P(e, void 0, void 0, function() {
479
+ var N, E, I, A, x, ce, J, de = this;
480
+ return $(this, function(Z) {
481
481
  switch (Z.label) {
482
482
  case 0:
483
- return I = v.data === void 0, C = d.value, C ? (A = n.cache.get(C), F = A && A.data, v.isValidating = !0, v.isLoading = !F, F && (v.data = F.data, v.error = F.error), W = p || a, !W || !n.isDocumentVisible() && !I || (y == null ? void 0 : y.forceRevalidate) !== void 0 && !(y != null && y.forceRevalidate) ? (v.isValidating = !1, v.isLoading = !1, [
483
+ return N = v.data === void 0, E = c.value, E ? (I = n.cache.get(E), A = I && I.data, v.isValidating = !0, v.isLoading = !A, A && (v.data = A.data, v.error = A.error), x = m || a, !x || !n.isDocumentVisible() && !N || (g == null ? void 0 : g.forceRevalidate) !== void 0 && !(g != null && g.forceRevalidate) ? (v.isValidating = !1, v.isLoading = !1, [
484
484
  2
485
485
  /*return*/
486
- ]) : A && (de = !!(Date.now() - A.createdAt >= n.dedupingInterval || y != null && y.forceRevalidate), !de) ? (v.isValidating = !1, v.isLoading = !1, [
486
+ ]) : I && (ce = !!(Date.now() - I.createdAt >= n.dedupingInterval || g != null && g.forceRevalidate), !ce) ? (v.isValidating = !1, v.isLoading = !1, [
487
487
  2
488
488
  /*return*/
489
489
  ]) : (J = function() {
490
- return U(fe, void 0, void 0, function() {
491
- var k, ve, ee, me;
492
- return z(this, function(B) {
493
- switch (B.label) {
490
+ return P(de, void 0, void 0, function() {
491
+ var k, fe, ee, ve;
492
+ return $(this, function(X) {
493
+ switch (X.label) {
494
494
  case 0:
495
- return k = ie.get(C), k ? [3, 2] : (ve = Array.isArray(C) ? C : [C], ee = W.apply(void 0, wr([], br(ve), !1)), ie.set(C, ee, n.dedupingInterval), [4, Te(C, ee, n.cache, u)]);
495
+ return k = ie.get(E), k ? [3, 2] : (fe = Array.isArray(E) ? E : [E], ee = x.apply(void 0, Ir([], Sr(fe), !1)), ie.set(E, ee, n.dedupingInterval), [4, Re(E, ee, n.cache, l)]);
496
496
  case 1:
497
- return B.sent(), [3, 4];
497
+ return X.sent(), [3, 4];
498
498
  case 2:
499
- return [4, Te(C, k.data, n.cache, u)];
499
+ return [4, Re(E, k.data, n.cache, l)];
500
500
  case 3:
501
- B.sent(), B.label = 4;
501
+ X.sent(), X.label = 4;
502
502
  case 4:
503
- return v.isValidating = !1, v.isLoading = !1, ie.delete(C), v.error !== void 0 && (me = !l && n.shouldRetryOnError && (y ? y.shouldRetryOnError : !0), me && Lr(h, y ? y.errorRetryCount : 1, n)), [
503
+ return v.isValidating = !1, v.isLoading = !1, ie.delete(E), v.error !== void 0 && (ve = !u && n.shouldRetryOnError && (g ? g.shouldRetryOnError : !0), ve && Dr(h, g ? g.errorRetryCount : 1, n)), [
504
504
  2
505
505
  /*return*/
506
506
  ];
507
507
  }
508
508
  });
509
509
  });
510
- }, F && n.revalidateDebounce ? (setTimeout(function() {
511
- return U(fe, void 0, void 0, function() {
512
- return z(this, function(k) {
510
+ }, A && n.revalidateDebounce ? (setTimeout(function() {
511
+ return P(de, void 0, void 0, function() {
512
+ return $(this, function(k) {
513
513
  switch (k.label) {
514
514
  case 0:
515
- return l ? [3, 2] : [4, J()];
515
+ return u ? [3, 2] : [4, J()];
516
516
  case 1:
517
517
  k.sent(), k.label = 2;
518
518
  case 2:
@@ -540,25 +540,25 @@ function Vr() {
540
540
  });
541
541
  });
542
542
  }, R = function() {
543
- return U(e, void 0, void 0, function() {
544
- return z(this, function(p) {
543
+ return P(e, void 0, void 0, function() {
544
+ return $(this, function(m) {
545
545
  return [2, h(null, { shouldRetryOnError: !1 })];
546
546
  });
547
547
  });
548
- }, m = null;
549
- Ue(function() {
550
- var p = function() {
551
- return U(e, void 0, void 0, function() {
552
- return z(this, function(y) {
553
- switch (y.label) {
548
+ }, y = null;
549
+ xe(function() {
550
+ var m = function() {
551
+ return P(e, void 0, void 0, function() {
552
+ return $(this, function(g) {
553
+ switch (g.label) {
554
554
  case 0:
555
555
  return !v.error && n.isOnline() ? [4, h()] : [3, 2];
556
556
  case 1:
557
- return y.sent(), [3, 3];
557
+ return g.sent(), [3, 3];
558
558
  case 2:
559
- m && clearTimeout(m), y.label = 3;
559
+ y && clearTimeout(y), g.label = 3;
560
560
  case 3:
561
- return n.refreshInterval && !l && (m = setTimeout(p, n.refreshInterval)), [
561
+ return n.refreshInterval && !u && (y = setTimeout(m, n.refreshInterval)), [
562
562
  2
563
563
  /*return*/
564
564
  ];
@@ -566,135 +566,131 @@ function Vr() {
566
566
  });
567
567
  });
568
568
  };
569
- n.refreshInterval && (m = setTimeout(p, n.refreshInterval)), n.revalidateOnFocus && (document.addEventListener("visibilitychange", R, !1), window.addEventListener("focus", R, !1));
570
- }), ze(function() {
571
- l = !0, m && clearTimeout(m), n.revalidateOnFocus && (document.removeEventListener("visibilitychange", R, !1), window.removeEventListener("focus", R, !1));
572
- var p = Y.get(d.value);
573
- p && (p.data = p.data.filter(function(y) {
574
- return y !== v;
569
+ n.refreshInterval && (y = setTimeout(m, n.refreshInterval)), n.revalidateOnFocus && (document.addEventListener("visibilitychange", R, !1), window.addEventListener("focus", R, !1));
570
+ }), qe(function() {
571
+ u = !0, y && clearTimeout(y), n.revalidateOnFocus && (document.removeEventListener("visibilitychange", R, !1), window.removeEventListener("focus", R, !1));
572
+ var m = Q.get(c.value);
573
+ m && (m.data = m.data.filter(function(g) {
574
+ return g !== v;
575
575
  }));
576
576
  });
577
577
  try {
578
- Ke(d, function(p) {
579
- Pe(d) || (d.value = p), v.key = p, v.isValidating = !!p, Or(d.value, v, u), !s && !c && d.value && h(), c = !1;
578
+ Ue(c, function(m) {
579
+ Pe(c) || (c.value = m), v.key = m, v.isValidating = !!m, Ar(c.value, v, l), !s && !d && c.value && h(), d = !1;
580
580
  }, {
581
581
  immediate: !0
582
582
  });
583
583
  } catch {
584
584
  }
585
- var E = b(b({}, $e(v)), { mutate: function(p, y) {
586
- return h(p, b(b({}, y), { forceRevalidate: !0 }));
585
+ var _ = b(b({}, $e(v)), { mutate: function(m, g) {
586
+ return h(m, b(b({}, g), { forceRevalidate: !0 }));
587
587
  } });
588
- return E;
588
+ return _;
589
589
  }
590
- function kr(e) {
590
+ function wr(e) {
591
591
  return e !== null && typeof e == "object" && typeof e.then == "function";
592
592
  }
593
- function Nr(e, r, t) {
593
+ function Or(e, r, t) {
594
594
  const {
595
595
  data: o,
596
596
  error: a,
597
597
  isValidating: n,
598
- mutate: l
599
- } = Vr(e, r, {
598
+ mutate: u
599
+ } = br(e, r, {
600
600
  revalidateDebounce: 500,
601
601
  revalidateOnFocus: !1,
602
602
  dedupingInterval: 100,
603
603
  ...t
604
604
  });
605
605
  return {
606
- data: g(() => o.value),
606
+ data: p(() => o.value),
607
607
  response: o,
608
608
  error: a,
609
609
  isValidating: n,
610
- revalidate: l
610
+ revalidate: u
611
611
  };
612
612
  }
613
- const N = {
614
- useI18n: mr,
615
- useMetricCardBuilder: _r,
616
- useMetricFetcher: Er,
617
- useRequest: Nr
618
- }, Ne = Symbol("METRICS_PROVIDER_KEY"), Mr = (e) => {
613
+ const M = {
614
+ useI18n: cr,
615
+ useMetricCardBuilder: pr,
616
+ useMetricFetcher: hr,
617
+ useRequest: Or
618
+ }, Ve = Symbol("METRICS_PROVIDER_KEY"), Lr = (e) => {
619
619
  const {
620
620
  datasource: r,
621
621
  dimension: t,
622
622
  dimensionFilterValue: o,
623
623
  additionalFilter: a,
624
624
  queryReady: n,
625
- timeframe: l,
626
- tz: c,
627
- hasTrendAccess: f,
628
- refreshInterval: i,
629
- abortController: s,
630
- queryFn: u,
631
- averageLatencies: d
625
+ timeRange: u,
626
+ hasTrendAccess: d,
627
+ refreshInterval: f,
628
+ abortController: i,
629
+ queryFn: s,
630
+ averageLatencies: l
632
631
  } = e;
633
632
  if (o && !t)
634
633
  throw new Error("Must provide a dimension if filtering by a value");
635
- const v = !!(t && o), h = !!(t && !o), R = g(() => {
636
- const I = [];
637
- return v && I.push({
634
+ const c = !!(t && o), v = !!(t && !o), h = p(() => {
635
+ const g = [];
636
+ return c && g.push({
638
637
  field: t,
639
638
  operator: "in",
640
639
  value: [o]
641
- }), a.value && I.push(...Ye(r.value, a.value)), I;
642
- }), m = {
640
+ }), a.value && g.push(...je(r.value, a.value)), g;
641
+ }), R = {
643
642
  datasource: r,
644
- metrics: H([
643
+ metrics: Y([
645
644
  "request_count"
646
645
  ]),
647
646
  // Traffic and error rate cards should only try to query for the dimension if it's going to be used.
648
647
  // It isn't used for single entity queries.
649
648
  dimensions: [
650
- ...t && !v ? [t] : [],
649
+ ...t && !c ? [t] : [],
651
650
  "status_code_grouped"
652
651
  ],
653
- filter: R,
652
+ filter: h,
654
653
  queryReady: n,
655
- timeframe: l,
656
- tz: c,
654
+ timeRange: u,
657
655
  // Traffic and error rate cards can't query trend if multiple entities are expected.
658
- withTrend: g(() => f.value && !h),
659
- refreshInterval: i,
660
- queryFn: u,
661
- abortController: s,
656
+ withTrend: p(() => d.value && !v),
657
+ refreshInterval: f,
658
+ queryFn: s,
659
+ abortController: i,
662
660
  refreshCounter: e.refreshCounter
663
- }, E = {
661
+ }, y = {
664
662
  datasource: r,
665
- metrics: g(() => [
666
- d.value ? "response_latency_average" : "response_latency_p99"
663
+ metrics: p(() => [
664
+ l.value ? "response_latency_average" : "response_latency_p99"
667
665
  ]),
668
666
  // To keep single-entity queries consistent, don't bother querying the dimension for latency
669
667
  // in the single-entity case, even though it's possible.
670
- ...t && !v ? { dimensions: [t] } : {},
671
- filter: R,
668
+ ...t && !c ? { dimensions: [t] } : {},
669
+ filter: h,
672
670
  queryReady: n,
673
- timeframe: l,
674
- tz: c,
671
+ timeRange: u,
675
672
  // Don't query latency trends in the multi-entity case: it's possible, but wasteful.
676
- withTrend: g(() => f.value && !h),
677
- refreshInterval: i,
678
- queryFn: u,
679
- abortController: s,
673
+ withTrend: p(() => d.value && !v),
674
+ refreshInterval: f,
675
+ queryFn: s,
676
+ abortController: i,
680
677
  refreshCounter: e.refreshCounter
681
- }, p = N.useMetricFetcher(m), y = N.useMetricFetcher(E);
678
+ }, _ = M.useMetricFetcher(R), m = M.useMetricFetcher(y);
682
679
  return {
683
- trafficData: p,
684
- latencyData: y
680
+ trafficData: _,
681
+ latencyData: m
685
682
  };
686
- }, Rt = /* @__PURE__ */ Q({
683
+ }, gt = /* @__PURE__ */ W({
687
684
  __name: "MetricsProvider",
688
685
  props: {
689
686
  datasource: { default: void 0 },
690
- maxTimeframe: { default: se.THIRTY_DAY },
691
- overrideTimeframe: { default: void 0 },
692
- tz: { default: void 0 },
687
+ maxTimeRange: { default: "30d" },
688
+ overrideTimeRange: { default: void 0 },
693
689
  dimension: { default: void 0 },
694
690
  filterValue: { default: void 0 },
695
691
  additionalFilter: { default: void 0 },
696
692
  queryReady: { type: Boolean, default: !0 },
697
- refreshInterval: { default: hr },
693
+ refreshInterval: { default: fr },
698
694
  longCardTitles: { type: Boolean, default: !1 },
699
695
  containerTitle: { default: void 0 },
700
696
  description: { default: void 0 },
@@ -704,94 +700,100 @@ const N = {
704
700
  },
705
701
  setup(e) {
706
702
  const r = e;
707
- if (r.dimension && Qe.findIndex((v) => v === r.dimension) === -1)
703
+ if (r.dimension && He.findIndex((c) => c === r.dimension) === -1)
708
704
  throw new Error(`Attempted to use MetricsProvider with an invalid dimension: ${r.dimension}`);
709
- const t = Se(gr);
705
+ const t = Ce(vr);
710
706
  let o;
711
707
  t ? o = t.queryFn : (console.warn("Analytics dashboards require a query bridge supplied via provide / inject."), console.warn("Please ensure your application has a query bridge provided under the key 'analytics-query-provider', as described in"), console.warn("https://github.com/Kong/public-ui-components/blob/main/packages/analytics/analytics-metric-provider/README.md#requirements"), o = () => Promise.reject(new Error("Query bridge required")));
712
- const a = rr(), n = g(() => !0), l = g(() => !a.loading && r.queryReady), c = g(() => r.tz ? r.tz : new Intl.DateTimeFormat().resolvedOptions().timeZone), f = g(() => r.datasource ? r.datasource : "basic"), i = g(() => r.overrideTimeframe || be.get(se.SEVEN_DAY)), s = g(() => !r.percentileLatency), {
713
- trafficData: u,
714
- latencyData: d
715
- } = Mr({
716
- datasource: f,
708
+ const a = We(), n = p(() => !0), u = p(() => !a.loading && r.queryReady), d = p(() => r.datasource ? r.datasource : "basic"), f = p(() => {
709
+ const c = r.overrideTimeRange;
710
+ return c && !c.tz && (c.tz = new Intl.DateTimeFormat().resolvedOptions().timeZone), c || {
711
+ type: "relative",
712
+ time_range: "7d",
713
+ tz: new Intl.DateTimeFormat().resolvedOptions().timeZone
714
+ };
715
+ }), i = p(() => !r.percentileLatency), {
716
+ trafficData: s,
717
+ latencyData: l
718
+ } = Lr({
719
+ datasource: d,
717
720
  dimension: r.dimension,
718
721
  dimensionFilterValue: r.filterValue,
719
- additionalFilter: X(r, "additionalFilter"),
720
- queryReady: l,
721
- timeframe: i,
722
- tz: c,
722
+ additionalFilter: G(r, "additionalFilter"),
723
+ queryReady: u,
724
+ timeRange: f,
723
725
  hasTrendAccess: n,
724
726
  refreshInterval: r.refreshInterval,
725
727
  queryFn: o,
726
- averageLatencies: s,
728
+ averageLatencies: i,
727
729
  abortController: r.abortController,
728
- refreshCounter: X(r, "refreshCounter")
730
+ refreshCounter: G(r, "refreshCounter")
729
731
  });
730
- return Be(Ne, {
732
+ return ze(Ve, {
731
733
  data: {
732
- traffic: u,
733
- latency: d
734
+ traffic: s,
735
+ latency: l
734
736
  },
735
- description: X(() => r.description),
736
- containerTitle: X(() => r.containerTitle),
737
+ description: G(() => r.description),
738
+ containerTitle: G(() => r.containerTitle),
737
739
  hasTrendAccess: n,
738
740
  longCardTitles: r.longCardTitles,
739
- averageLatencies: s
740
- }), (v, h) => Ie(v.$slots, "default", {
741
+ averageLatencies: i
742
+ }), (c, v) => Se(c.$slots, "default", {
741
743
  hasTrendAccess: n.value,
742
- timeframe: i.value
744
+ timeRange: f.value
743
745
  });
744
746
  }
745
747
  });
746
- function Fr(e) {
748
+ function Vr(e) {
747
749
  return e && e.__esModule && Object.prototype.hasOwnProperty.call(e, "default") ? e.default : e;
748
750
  }
749
- var Me = { exports: {} };
751
+ var Ne = { exports: {} };
750
752
  (function(e) {
751
753
  (function() {
752
754
  function r(i, s) {
753
755
  if (s.separator === !1 || i < 1e3)
754
756
  return i.toString();
755
- var u = typeof s.separator == "string" ? s.separator : ",", d = [], v = Math.round(i).toString().split("");
757
+ var l = typeof s.separator == "string" ? s.separator : ",", c = [], v = Math.round(i).toString().split("");
756
758
  return v.reverse().forEach(function(h, R) {
757
- R && R % 3 === 0 && d.push(u), d.push(h);
758
- }), d.reverse().join("");
759
+ R && R % 3 === 0 && c.push(l), c.push(h);
760
+ }), c.reverse().join("");
759
761
  }
760
- function t(i, s, u) {
761
- var d = i / s, v = u.round ? "round" : "floor";
762
- return u.decimal === !1 ? (i = Math[v](d), i.toString()) : (u.precision ? i = d : i = d < 10 ? Math[v](d * 10) / 10 : Math[v](d), i = i.toString(), typeof u.decimal == "string" && (i = i.replace(".", u.decimal)), i);
762
+ function t(i, s, l) {
763
+ var c = i / s, v = l.round ? "round" : "floor";
764
+ return l.decimal === !1 ? (i = Math[v](c), i.toString()) : (l.precision ? i = c : i = c < 10 ? Math[v](c * 10) / 10 : Math[v](c), i = i.toString(), typeof l.decimal == "string" && (i = i.replace(".", l.decimal)), i);
763
765
  }
764
- var o = 1e3, a = 1e4, n = 1e6, l = 1e9, c = 1e12;
766
+ var o = 1e3, a = 1e4, n = 1e6, u = 1e9, d = 1e12;
765
767
  function f(i, s) {
766
- var u;
768
+ var l;
767
769
  s = s || {};
768
- var d = i < 0;
769
- d && (i = Math.abs(i)), s.precision && (i = parseFloat(i.toPrecision(s.precision)));
770
+ var c = i < 0;
771
+ c && (i = Math.abs(i)), s.precision && (i = parseFloat(i.toPrecision(s.precision)));
770
772
  var v = s.min10k ? a : o;
771
- return i < v || s.precision && s.precision > Math.log10(i) ? u = r(t(i, 1, s), s) : i < n ? u = t(i, o, s) + "k" : i < l ? u = t(i, n, s) + "m" : i < c ? u = r(t(i, l, s), s) + "b" : u = r(t(i, c, s), s) + "t", d && (u = "-" + u), s.capital && (u = u.toUpperCase()), s.prefix && (u = s.prefix + u), s.suffix && (u = u + s.suffix), u;
773
+ return i < v || s.precision && s.precision > Math.log10(i) ? l = r(t(i, 1, s), s) : i < n ? l = t(i, o, s) + "k" : i < u ? l = t(i, n, s) + "m" : i < d ? l = r(t(i, u, s), s) + "b" : l = r(t(i, d, s), s) + "t", c && (l = "-" + l), s.capital && (l = l.toUpperCase()), s.prefix && (l = s.prefix + l), s.suffix && (l = l + s.suffix), l;
772
774
  }
773
775
  f.addCommas = r, e.exports = f;
774
776
  })();
775
- })(Me);
776
- var xr = Me.exports;
777
- const qr = /* @__PURE__ */ Fr(xr);
777
+ })(Ne);
778
+ var Nr = Ne.exports;
779
+ const kr = /* @__PURE__ */ Vr(Nr);
778
780
  var O = /* @__PURE__ */ ((e) => (e.GENERIC_COUNT = "GenericCount", e.TRAFFIC = "Traffic", e.ERROR_RATE = "ErrorRate", e.LATENCY = "Latency", e))(O || {}), D = /* @__PURE__ */ ((e) => (e.Small = "sm", e.Medium = "md", e.Large = "lg", e.ExtraLarge = "xl", e))(D || {});
779
- const le = 2, Ee = le + 2, Ur = (e, r, t = !1) => {
780
- let o = !r || Number(e.toFixed(Ee)) === 0 ? 0 : Number(e.toFixed(Ee)) > 0 ? 1 : -1;
781
+ const ue = 2, Te = ue + 2, Mr = (e, r, t = !1) => {
782
+ let o = !r || Number(e.toFixed(Te)) === 0 ? 0 : Number(e.toFixed(Te)) > 0 ? 1 : -1;
781
783
  return t && (o *= -1), o;
782
- }, zr = (e, r, t) => r ? `${Math.abs(e * 100).toFixed(le)}%` : t, Kr = (e, r) => r === 0 ? 0 : e / r - 1, Pr = (e, r = !1) => (r && (e *= -1), e > 0 ? tr : e < 0 ? nr : we), $r = "#ad000e", oe = "#6c7489", _e = "#52596e", Br = "#007d60", G = "16px", Xr = "20px", Gr = {
784
+ }, Fr = (e, r, t) => r ? `${Math.abs(e * 100).toFixed(ue)}%` : t, xr = (e, r) => r === 0 ? 0 : e / r - 1, qr = (e, r = !1) => (r && (e *= -1), e > 0 ? Je : e < 0 ? Ze : De), Ur = "#ad000e", oe = "#6c7489", Ee = "#52596e", Pr = "#007d60", j = "16px", $r = "20px", zr = {
783
785
  key: 0,
784
786
  class: "metricscard-description"
785
- }, jr = { class: "metricscard-valuetrend" }, Hr = {
787
+ }, Kr = { class: "metricscard-valuetrend" }, Br = {
786
788
  key: 0,
787
789
  class: "metricscard-error"
788
- }, Yr = {
790
+ }, Xr = {
789
791
  key: 2,
790
792
  class: "metricscard-trend"
791
- }, Qr = { "data-testid": "metric-trend-change" }, Wr = {
793
+ }, Gr = { "data-testid": "metric-trend-change" }, jr = {
792
794
  key: 0,
793
795
  class: "metricscard-trend-range"
794
- }, Jr = /* @__PURE__ */ Q({
796
+ }, Hr = /* @__PURE__ */ W({
795
797
  __name: "MetricsCard",
796
798
  props: {
797
799
  cardType: {
@@ -833,7 +835,7 @@ const le = 2, Ee = le + 2, Ur = (e, r, t = !1) => {
833
835
  },
834
836
  trendIcon: {
835
837
  type: Object,
836
- default: we
838
+ default: De
837
839
  },
838
840
  trendRange: {
839
841
  type: String,
@@ -864,119 +866,119 @@ const le = 2, Ee = le + 2, Ur = (e, r, t = !1) => {
864
866
  },
865
867
  setup(e) {
866
868
  const r = /* @__PURE__ */ new Map([
867
- [O.GENERIC_COUNT, ar],
868
- [O.TRAFFIC, ir],
869
- [O.ERROR_RATE, or],
870
- [O.LATENCY, sr]
871
- ]), t = e, o = (c) => {
869
+ [O.GENERIC_COUNT, er],
870
+ [O.TRAFFIC, rr],
871
+ [O.ERROR_RATE, tr],
872
+ [O.LATENCY, nr]
873
+ ]), t = e, o = (d) => {
872
874
  const f = {
873
- red: `var(--kui-color-text-danger-strong, ${$r})`,
874
- green: `var(--kui-color-text-success, ${Br})`,
875
- grey: `var(--kui-color-text-neutral-strong, ${_e})`
875
+ red: `var(--kui-color-text-danger-strong, ${Ur})`,
876
+ green: `var(--kui-color-text-success, ${Pr})`,
877
+ grey: `var(--kui-color-text-neutral-strong, ${Ee})`
876
878
  };
877
- return c > 0 ? f.green : c < 0 ? f.red : f.grey;
878
- }, a = (c) => c > 0 ? "positive" : c < 0 ? "negative" : "neutral", n = [D.Medium, D.Large].includes(t.cardSize), l = [D.Small].includes(t.cardSize);
879
- return (c, f) => {
880
- const i = Ae("KTooltip");
879
+ return d > 0 ? f.green : d < 0 ? f.red : f.grey;
880
+ }, a = (d) => d > 0 ? "positive" : d < 0 ? "negative" : "neutral", n = [D.Medium, D.Large].includes(t.cardSize), u = [D.Small].includes(t.cardSize);
881
+ return (d, f) => {
882
+ const i = Ie("KTooltip");
881
883
  return T(), S("div", {
882
- class: K(["metricscard", e.cardSize])
884
+ class: z(["metricscard", e.cardSize])
883
885
  }, [
884
- x("div", {
885
- class: K(["metricscard-title", e.cardSize])
886
+ q("div", {
887
+ class: z(["metricscard-title", e.cardSize])
886
888
  }, [
887
- _(l) ? V("", !0) : (T(), q(re(_(r).get(e.cardType)), {
889
+ C(u) ? V("", !0) : (T(), U(re(C(r).get(e.cardType)), {
888
890
  key: 0,
889
891
  class: "metricscard-icon",
890
- color: `var(--kui-color-text-neutral, ${_(oe)})`,
891
- size: _(G)
892
+ color: `var(--kui-color-text-neutral, ${C(oe)})`,
893
+ size: C(j)
892
894
  }, null, 8, ["color", "size"])),
893
- (T(), q(re(e.titleTag), null, {
894
- default: ye(() => [
895
- De(w(e.title), 1)
895
+ (T(), U(re(e.titleTag), null, {
896
+ default: me(() => [
897
+ Ae(w(e.title), 1)
896
898
  ]),
897
899
  _: 1
898
900
  })),
899
- e.tooltip ? (T(), q(i, {
901
+ e.tooltip ? (T(), U(i, {
900
902
  key: 1,
901
903
  class: "metricscard-tooltip",
902
904
  placement: "right",
903
905
  text: e.tooltip
904
906
  }, {
905
- default: ye(() => [
906
- M(_(ur), {
907
- color: `var(--kui-color-text-neutral, ${_(oe)})`,
908
- size: _(G)
907
+ default: me(() => [
908
+ F(C(ar), {
909
+ color: `var(--kui-color-text-neutral, ${C(oe)})`,
910
+ size: C(j)
909
911
  }, null, 8, ["color", "size"])
910
912
  ]),
911
913
  _: 1
912
914
  }, 8, ["text"])) : V("", !0)
913
915
  ], 2),
914
- e.description && _(n) ? (T(), S("div", Gr, [
915
- x("span", null, w(e.description), 1)
916
+ e.description && C(n) ? (T(), S("div", zr, [
917
+ q("span", null, w(e.description), 1)
916
918
  ])) : V("", !0),
917
- x("div", jr, [
918
- e.hasError ? (T(), S("div", Hr, [
919
- M(_(Oe), {
920
- color: `var(--kui-color-text-neutral, ${_(oe)})`,
921
- size: _(Xr)
919
+ q("div", Kr, [
920
+ e.hasError ? (T(), S("div", Br, [
921
+ F(C(be), {
922
+ color: `var(--kui-color-text-neutral, ${C(oe)})`,
923
+ size: C($r)
922
924
  }, null, 8, ["color", "size"]),
923
- x("div", null, " " + w(e.errorMessage), 1)
925
+ q("div", null, " " + w(e.errorMessage), 1)
924
926
  ])) : (T(), S("div", {
925
927
  key: 1,
926
- class: K(["metricscard-value", e.cardSize]),
928
+ class: z(["metricscard-value", e.cardSize]),
927
929
  "data-testid": "metric-value"
928
930
  }, w(e.metricValue), 3)),
929
- _(n) ? (T(), S("div", Yr, [
930
- x("div", {
931
- class: K(["metricscard-trend-change", a(e.changePolarity)]),
931
+ C(n) ? (T(), S("div", Xr, [
932
+ q("div", {
933
+ class: z(["metricscard-trend-change", a(e.changePolarity)]),
932
934
  "data-testid": "metric-trend-parent"
933
935
  }, [
934
- e.changePolarity !== 0 ? (T(), q(re(e.trendIcon), {
936
+ e.changePolarity !== 0 ? (T(), U(re(e.trendIcon), {
935
937
  key: 0,
936
938
  color: o(e.changePolarity),
937
- size: _(G)
938
- }, null, 8, ["color", "size"])) : (T(), q(_(lr), {
939
+ size: C(j)
940
+ }, null, 8, ["color", "size"])) : (T(), U(C(ir), {
939
941
  key: 1,
940
- color: `var(--kui-color-text-neutral-strong, ${_(_e)})`,
941
- size: _(G)
942
+ color: `var(--kui-color-text-neutral-strong, ${C(Ee)})`,
943
+ size: C(j)
942
944
  }, null, 8, ["color", "size"])),
943
- x("div", Qr, w(e.metricChange), 1)
945
+ q("div", Gr, w(e.metricChange), 1)
944
946
  ], 2),
945
- e.trendRange ? (T(), S("div", Wr, w(e.trendRange), 1)) : V("", !0)
947
+ e.trendRange ? (T(), S("div", jr, w(e.trendRange), 1)) : V("", !0)
946
948
  ])) : V("", !0)
947
949
  ])
948
950
  ], 2);
949
951
  };
950
952
  }
951
- }), ce = (e, r) => {
953
+ }), le = (e, r) => {
952
954
  const t = e.__vccOpts || e;
953
955
  for (const [o, a] of r)
954
956
  t[o] = a;
955
957
  return t;
956
- }, Zr = /* @__PURE__ */ ce(Jr, [["__scopeId", "data-v-b1513f6f"]]), et = {}, rt = { class: "loading-tabs" };
957
- function tt(e, r) {
958
- const t = Ae("KSkeletonBox");
959
- return T(), S("div", rt, [
960
- M(t, { width: "100" }),
961
- M(t, { width: "75" })
958
+ }, Yr = /* @__PURE__ */ le(Hr, [["__scopeId", "data-v-b1513f6f"]]), Qr = {}, Wr = { class: "loading-tabs" };
959
+ function Jr(e, r) {
960
+ const t = Ie("KSkeletonBox");
961
+ return T(), S("div", Wr, [
962
+ F(t, { width: "100" }),
963
+ F(t, { width: "75" })
962
964
  ]);
963
965
  }
964
- const nt = /* @__PURE__ */ ce(et, [["render", tt], ["__scopeId", "data-v-9c7113d7"]]), at = {
966
+ const Zr = /* @__PURE__ */ le(Qr, [["render", Jr], ["__scopeId", "data-v-9c7113d7"]]), et = {
965
967
  key: 0,
966
968
  class: "container-title"
967
- }, it = {
969
+ }, rt = {
968
970
  key: 0,
969
971
  class: "container-description"
970
- }, ot = {
972
+ }, tt = {
971
973
  key: 1,
972
974
  class: "error-display"
973
- }, st = {
975
+ }, nt = {
974
976
  key: 0,
975
977
  class: "error-display-message"
976
- }, ut = {
978
+ }, at = {
977
979
  key: 2,
978
980
  class: "cards-wrapper"
979
- }, lt = /* @__PURE__ */ Q({
981
+ }, it = /* @__PURE__ */ W({
980
982
  __name: "MetricCardContainer",
981
983
  props: {
982
984
  fallbackDisplayText: {
@@ -1019,52 +1021,52 @@ const nt = /* @__PURE__ */ ce(et, [["render", tt], ["__scopeId", "data-v-9c7113d
1019
1021
  }
1020
1022
  },
1021
1023
  setup(e) {
1022
- const r = e, t = g(() => r.cards.every((a) => (a == null ? void 0 : a.hasError) === !0)), o = (a) => {
1023
- const n = Kr(a.currentValue, a.previousValue) || 0, l = Ur(n, r.hasTrendAccess, a.increaseIsBad);
1024
+ const r = e, t = p(() => r.cards.every((a) => (a == null ? void 0 : a.hasError) === !0)), o = (a) => {
1025
+ const n = xr(a.currentValue, a.previousValue) || 0, u = Mr(n, r.hasTrendAccess, a.increaseIsBad);
1024
1026
  return {
1025
- metricValue: a.formatValueFn ? a.formatValueFn(a.currentValue) : qr(a.currentValue, { capital: !0, round: !0 }) || "0",
1026
- metricChange: a.formatChangeFn ? a.formatChangeFn(n) : zr(n, r.hasTrendAccess, r.fallbackDisplayText),
1027
- changePolarity: l,
1028
- trendIcon: Pr(l, a.increaseIsBad),
1027
+ metricValue: a.formatValueFn ? a.formatValueFn(a.currentValue) : kr(a.currentValue, { capital: !0, round: !0 }) || "0",
1028
+ metricChange: a.formatChangeFn ? a.formatChangeFn(n) : Fr(n, r.hasTrendAccess, r.fallbackDisplayText),
1029
+ changePolarity: u,
1030
+ trendIcon: qr(u, a.increaseIsBad),
1029
1031
  cardSize: r.cardSize,
1030
1032
  hasContainerTitle: !!r.containerTitle
1031
1033
  };
1032
1034
  };
1033
1035
  return (a, n) => (T(), S("div", {
1034
- class: K(["kong-ui-public-metric-card-container", e.cardSize])
1036
+ class: z(["kong-ui-public-metric-card-container", e.cardSize])
1035
1037
  }, [
1036
- r.containerTitle || r.containerDescription ? (T(), S("div", at, [
1037
- De(w(r.containerTitle) + " ", 1),
1038
- r.containerDescription ? (T(), S("div", it, w(r.containerDescription), 1)) : V("", !0)
1038
+ r.containerTitle || r.containerDescription ? (T(), S("div", et, [
1039
+ Ae(w(r.containerTitle) + " ", 1),
1040
+ r.containerDescription ? (T(), S("div", rt, w(r.containerDescription), 1)) : V("", !0)
1039
1041
  ])) : V("", !0),
1040
- t.value ? (T(), S("div", ot, [
1041
- M(_(Oe), { class: "error-display-icon" }),
1042
- e.errorMessage ? (T(), S("div", st, w(e.errorMessage), 1)) : V("", !0)
1043
- ])) : (T(), S("div", ut, [
1044
- (T(!0), S(he, null, Xe(e.cards, (l, c) => (T(), S(he, null, [
1042
+ t.value ? (T(), S("div", tt, [
1043
+ F(C(be), { class: "error-display-icon" }),
1044
+ e.errorMessage ? (T(), S("div", nt, w(e.errorMessage), 1)) : V("", !0)
1045
+ ])) : (T(), S("div", at, [
1046
+ (T(!0), S(ge, null, Ke(e.cards, (u, d) => (T(), S(ge, null, [
1045
1047
  e.loading ? (T(), S("div", {
1046
- key: `skeleton-${c}`,
1048
+ key: `skeleton-${d}`,
1047
1049
  class: "loading-tab"
1048
1050
  }, [
1049
- M(nt, {
1050
- class: K(e.cardSize === _(D).Small ? "loading-tabs-small" : "loading-tabs-large")
1051
+ F(Zr, {
1052
+ class: z(e.cardSize === C(D).Small ? "loading-tabs-small" : "loading-tabs-large")
1051
1053
  }, null, 8, ["class"])
1052
- ])) : (T(), q(Zr, Ge({ key: c }, { ref_for: !0 }, o(l), {
1054
+ ])) : (T(), U(Yr, Be({ key: d }, { ref_for: !0 }, o(u), {
1053
1055
  "card-size": e.cardSize,
1054
- "card-type": l.cardType,
1055
- description: l.description,
1056
+ "card-type": u.cardType,
1057
+ description: u.description,
1056
1058
  "error-message": e.errorMessage,
1057
- "has-error": l.hasError,
1058
- title: l.title,
1059
- "title-tag": l.titleTag,
1060
- tooltip: l.tooltip,
1061
- "trend-range": l.trendRange
1059
+ "has-error": u.hasError,
1060
+ title: u.title,
1061
+ "title-tag": u.titleTag,
1062
+ tooltip: u.tooltip,
1063
+ "trend-range": u.trendRange
1062
1064
  }), null, 16, ["card-size", "card-type", "description", "error-message", "has-error", "title", "title-tag", "tooltip", "trend-range"]))
1063
1065
  ], 64))), 256))
1064
1066
  ]))
1065
1067
  ], 2));
1066
1068
  }
1067
- }), ct = /* @__PURE__ */ ce(lt, [["__scopeId", "data-v-7080ba56"]]), Tt = /* @__PURE__ */ Q({
1069
+ }), ot = /* @__PURE__ */ le(it, [["__scopeId", "data-v-7080ba56"]]), yt = /* @__PURE__ */ W({
1068
1070
  __name: "MetricsConsumer",
1069
1071
  props: {
1070
1072
  lookupKey: { default: void 0 },
@@ -1072,34 +1074,34 @@ const nt = /* @__PURE__ */ ce(et, [["render", tt], ["__scopeId", "data-v-9c7113d
1072
1074
  cardToDisplay: { default: void 0 }
1073
1075
  },
1074
1076
  setup(e) {
1075
- const r = e, t = Se(Ne);
1077
+ const r = e, t = Ce(Ve);
1076
1078
  if (!t)
1077
1079
  throw new Error("MetricsConsumer must be nested inside a MetricsProvider instance.");
1078
- const { traffic: o, latency: a } = t.data, { i18n: n } = N.useI18n(), l = g(() => t.containerTitle.value ? D.Medium : r.cardSize), c = N.useMetricCardBuilder({
1080
+ const { traffic: o, latency: a } = t.data, { i18n: n } = M.useI18n(), u = p(() => t.containerTitle.value ? D.Medium : r.cardSize), d = M.useMetricCardBuilder({
1079
1081
  cardType: O.TRAFFIC,
1080
- title: g(() => t.longCardTitles ? n.t("metricCard.long.traffic") : n.t("metricCard.short.traffic")),
1082
+ title: p(() => t.longCardTitles ? n.t("metricCard.long.traffic") : n.t("metricCard.short.traffic")),
1081
1083
  record: o.mapped,
1082
1084
  hasError: o.hasError,
1083
1085
  lookupKey: r.lookupKey,
1084
- sumGroupedValues: $,
1086
+ sumGroupedValues: B,
1085
1087
  trendRange: o.trendRange
1086
- }), f = (m) => `${m.toFixed(le)}%`, i = g(() => {
1087
- const m = o.mapped.value, E = P(m, "current", r.lookupKey, ge), p = P(m, "current", r.lookupKey, $), y = E / p * 100 || 0, I = P(m, "previous", r.lookupKey, ge), C = P(m, "previous", r.lookupKey, $), A = I / C * 100 || 0;
1088
+ }), f = (y) => `${y.toFixed(ue)}%`, i = p(() => {
1089
+ const y = o.mapped.value, _ = K(y, "current", r.lookupKey, ye), m = K(y, "current", r.lookupKey, B), g = _ / m * 100 || 0, N = K(y, "previous", r.lookupKey, ye), E = K(y, "previous", r.lookupKey, B), I = N / E * 100 || 0;
1088
1090
  return {
1089
1091
  cardType: O.ERROR_RATE,
1090
1092
  hasError: o.hasError.value,
1091
- currentValue: y,
1092
- previousValue: A,
1093
+ currentValue: g,
1094
+ previousValue: I,
1093
1095
  formatValueFn: f,
1094
1096
  title: t.longCardTitles ? n.t("metricCard.long.errorRate") : n.t("metricCard.short.errorRate"),
1095
1097
  increaseIsBad: !0,
1096
1098
  trendRange: o.trendRange.value
1097
1099
  };
1098
- }), s = (m) => `${m}ms`, u = N.useMetricCardBuilder({
1100
+ }), s = (y) => `${y}ms`, l = M.useMetricCardBuilder({
1099
1101
  cardType: O.LATENCY,
1100
- title: g(() => {
1101
- const { longCardTitles: m, averageLatencies: E } = t, p = E.value ? "averageLatency" : "p99Latency";
1102
- return m ? n.t(`metricCard.long.${p}`) : l.value === D.Small ? n.t(`metricCard.small.${p}`) : n.t(`metricCard.short.${p}`);
1102
+ title: p(() => {
1103
+ const { longCardTitles: y, averageLatencies: _ } = t, m = _.value ? "averageLatency" : "p99Latency";
1104
+ return y ? n.t(`metricCard.long.${m}`) : u.value === D.Small ? n.t(`metricCard.small.${m}`) : n.t(`metricCard.short.${m}`);
1103
1105
  }),
1104
1106
  hasError: a.hasError,
1105
1107
  record: a.mapped,
@@ -1107,84 +1109,103 @@ const nt = /* @__PURE__ */ ce(et, [["render", tt], ["__scopeId", "data-v-9c7113d
1107
1109
  increaseIsBad: !0,
1108
1110
  formatValueFn: s,
1109
1111
  trendRange: a.trendRange
1110
- }), d = g(() => r.cardToDisplay === "TRAFFIC" ? [c.value] : r.cardToDisplay === "ERROR_RATE" ? [i.value] : r.cardToDisplay === "LATENCY" ? [u.value] : [c.value, i.value, u.value]), v = g(() => r.cardToDisplay === "TRAFFIC" || r.cardToDisplay === "ERROR_RATE" ? o.isLoading.value : r.cardToDisplay === "LATENCY" ? a.isLoading.value : o.isLoading.value || a.isLoading.value), h = g(() => ({
1111
- cards: d.value,
1112
+ }), c = p(() => r.cardToDisplay === "TRAFFIC" ? [d.value] : r.cardToDisplay === "ERROR_RATE" ? [i.value] : r.cardToDisplay === "LATENCY" ? [l.value] : [d.value, i.value, l.value]), v = p(() => r.cardToDisplay === "TRAFFIC" || r.cardToDisplay === "ERROR_RATE" ? o.isLoading.value : r.cardToDisplay === "LATENCY" ? a.isLoading.value : o.isLoading.value || a.isLoading.value), h = p(() => ({
1113
+ cards: c.value,
1112
1114
  containerTitle: t.containerTitle.value,
1113
1115
  containerDescription: t.description.value,
1114
1116
  loading: v.value,
1115
1117
  hasTrendAccess: t.hasTrendAccess.value,
1116
1118
  fallbackDisplayText: n.t("general.notAvailable"),
1117
- cardSize: l.value,
1119
+ cardSize: u.value,
1118
1120
  hideTitle: !0
1119
- })), R = g(() => ({
1121
+ })), R = p(() => ({
1120
1122
  loading: h.value.loading,
1121
- trafficCard: c.value,
1123
+ trafficCard: d.value,
1122
1124
  errorRateCard: i.value,
1123
- latencyCard: u.value,
1125
+ latencyCard: l.value,
1124
1126
  errorRateFormatted: f(i.value.currentValue),
1125
- latencyFormatted: s(u.value.currentValue)
1127
+ latencyFormatted: s(l.value.currentValue)
1126
1128
  }));
1127
- return (m, E) => Ie(m.$slots, "default", { cardValues: R.value }, () => [
1128
- M(ct, je(He(h.value)), null, 16)
1129
+ return (y, _) => Se(y.$slots, "default", { cardValues: R.value }, () => [
1130
+ F(ot, Xe(Ge(h.value)), null, 16)
1129
1131
  ]);
1130
1132
  }
1131
- }), j = (e) => new Date(e), Et = (e, r) => {
1133
+ }), H = (e) => new Date(e), ht = (e, r) => {
1132
1134
  const t = e.body;
1133
1135
  e.reply({
1134
1136
  statusCode: 200,
1135
- body: dt(t, r)
1137
+ body: st(t, r)
1136
1138
  });
1137
- }, Ce = (e) => e.reduce((r, t) => (r[t] = { name: t }, r), {}), dt = (e, r) => {
1138
- var h, R;
1139
- const t = (r == null ? void 0 : r.timeFrame) || be.get(se.ONE_DAY), o = e.granularity === "trend" ? new We(t) : new Je(t), a = o.endMs(), n = o.startMs(), l = o.granularityMs(), c = e.granularity === "trend" ? 2 : 1;
1139
+ }, _e = (e) => e.reduce((r, t) => (r[t] = { name: t }, r), {}), st = (e, r) => {
1140
+ var R, y, _;
1141
+ const t = r != null && r.timeRange && {
1142
+ start: r.timeRange.start,
1143
+ end: r.timeRange.end
1144
+ } || ((R = e.time_range) == null ? void 0 : R.type) === "absolute" ? {
1145
+ // @ts-ignore - already asserted time range is absolute above
1146
+ start: new Date(e.time_range.start),
1147
+ // @ts-ignore - already asserted time range is absolute above
1148
+ end: new Date(e.time_range.end)
1149
+ } : {
1150
+ start: new Date(Date.now() - 864e5),
1151
+ end: /* @__PURE__ */ new Date()
1152
+ }, o = t.end.getTime() - t.start.getTime(), a = e.granularity === "trend" ? {
1153
+ start: new Date(t.start.getTime() - o),
1154
+ end: t.end,
1155
+ granularity: t.end.getTime() - t.start.getTime()
1156
+ } : {
1157
+ start: t.start,
1158
+ end: t.end,
1159
+ granularity: t.end.getTime() - t.start.getTime()
1160
+ }, n = a.end.getTime(), u = a.start.getTime(), d = a.granularity, f = e.granularity === "trend" ? 2 : 1;
1140
1161
  if ((e.dimensions ?? []).length > 2)
1141
1162
  throw new Error(`Explore only supports 0-2 dimensions; got: ${JSON.stringify(e.dimensions)}`);
1142
- const f = (e.dimensions ?? []).find((m) => m !== "time"), i = (r == null ? void 0 : r.dimensionNames) ?? [], s = Math.max(i.length, 1), u = e.metrics || [], d = [];
1143
- for (let m = 0; m < c; m++)
1144
- for (let E = 0; E < s; E++) {
1145
- const p = f ? { [f]: i[E] } : {};
1146
- (h = e.dimensions) != null && h.includes("status_code_grouped") ? $.forEach((y) => {
1147
- const I = u.reduce((C, A) => ((r == null ? void 0 : r.deterministic) ?? !0 ? C[A] = (c - m) * 1e3 + 100 * E + 1 : C[A] = Math.round(Math.random() * 1e3), C), { ...p, status_code_grouped: y });
1148
- d.push({
1163
+ const i = (e.dimensions ?? []).find((m) => m !== "time"), s = (r == null ? void 0 : r.dimensionNames) ?? [], l = Math.max(s.length, 1), c = e.metrics || [], v = [];
1164
+ for (let m = 0; m < f; m++)
1165
+ for (let g = 0; g < l; g++) {
1166
+ const N = i ? { [i]: s[g] } : {};
1167
+ (y = e.dimensions) != null && y.includes("status_code_grouped") ? B.forEach((E) => {
1168
+ const I = c.reduce((A, x) => ((r == null ? void 0 : r.deterministic) ?? !0 ? A[x] = (f - m) * 1e3 + 100 * g + 1 : A[x] = Math.round(Math.random() * 1e3), A), { ...N, status_code_grouped: E });
1169
+ v.push({
1149
1170
  version: "v1",
1150
- timestamp: m === 0 ? j(n).toISOString() : j(n + l).toISOString(),
1171
+ timestamp: m === 0 ? H(u).toISOString() : H(u + d).toISOString(),
1151
1172
  event: I
1152
1173
  });
1153
- }) : d.push({
1174
+ }) : v.push({
1154
1175
  version: "v1",
1155
- timestamp: m === 0 ? j(n).toISOString() : j(n + l).toISOString(),
1156
- event: u.reduce((y, I) => ((r == null ? void 0 : r.deterministic) ?? !0 ? y[I] = (c - m) * 1e3 + 100 * E + 1 : y[I] = Math.round(Math.random() * 1e3), y), { ...p })
1176
+ timestamp: m === 0 ? H(u).toISOString() : H(u + d).toISOString(),
1177
+ event: c.reduce((E, I) => ((r == null ? void 0 : r.deterministic) ?? !0 ? E[I] = (f - m) * 1e3 + 100 * g + 1 : E[I] = Math.round(Math.random() * 1e3), E), { ...N })
1157
1178
  });
1158
1179
  }
1159
- const v = {
1160
- start_ms: n,
1161
- end_ms: a,
1162
- start: new Date(n).toISOString(),
1163
- end: new Date(a).toISOString(),
1164
- granularity_ms: l,
1165
- display: f ? {
1166
- [f]: Ce(i),
1167
- ...(R = e.dimensions) != null && R.includes("status_code_grouped") ? { status_code_grouped: Ce($) } : {}
1180
+ const h = {
1181
+ start_ms: u,
1182
+ end_ms: n,
1183
+ start: new Date(u).toISOString(),
1184
+ end: new Date(n).toISOString(),
1185
+ granularity_ms: d,
1186
+ display: i ? {
1187
+ [i]: _e(s),
1188
+ ...(_ = e.dimensions) != null && _.includes("status_code_grouped") ? { status_code_grouped: _e(B) } : {}
1168
1189
  } : {},
1169
1190
  metric_names: e.metrics,
1170
1191
  query_id: "test"
1171
1192
  };
1172
1193
  return {
1173
- data: d,
1174
- meta: v
1194
+ data: v,
1195
+ meta: h
1175
1196
  };
1176
1197
  };
1177
1198
  export {
1178
- $ as ALL_STATUS_CODE_GROUPS,
1179
- hr as DEFAULT_REFRESH_INTERVAL,
1180
- gr as INJECT_QUERY_PROVIDER,
1181
- yr as MAX_ANALYTICS_REQUEST_RETRIES,
1199
+ B as ALL_STATUS_CODE_GROUPS,
1200
+ fr as DEFAULT_REFRESH_INTERVAL,
1201
+ vr as INJECT_QUERY_PROVIDER,
1202
+ dr as MAX_ANALYTICS_REQUEST_RETRIES,
1182
1203
  D as MetricCardSize,
1183
1204
  O as MetricCardType,
1184
- Tt as MetricsConsumer,
1185
- Rt as MetricsProvider,
1186
- ge as STATUS_CODES_FAILED,
1187
- pt as STATUS_CODES_SUCCESS,
1188
- dt as mockExploreResponse,
1189
- Et as mockExploreResponseFromCypress
1205
+ yt as MetricsConsumer,
1206
+ gt as MetricsProvider,
1207
+ ye as STATUS_CODES_FAILED,
1208
+ mt as STATUS_CODES_SUCCESS,
1209
+ st as mockExploreResponse,
1210
+ ht as mockExploreResponseFromCypress
1190
1211
  };