@kong-ui-public/analytics-config-store 1.4.66 → 1.4.67-pr.3942.72fef96ff.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.
package/README.md CHANGED
@@ -8,7 +8,7 @@ Cache analytics config information and conditionally render UI elements based on
8
8
 
9
9
  ## Features
10
10
 
11
- This package provides caches for analytics config information (including whether an organization has analytics, its data retention for various products, and datasource metadata). It does not fetch the information itself; instead, it relies on an analytics bridge to issue the necessary API calls. The cache ensures that the API calls don't need to be repeated for every component that needs the information.
11
+ This package provides caches for analytics config information (including whether an organization has analytics, its data retention for various products, and datasource metadata including translated field names). It does not fetch the information itself; instead, it relies on an analytics bridge to issue the necessary API calls. The cache ensures that the API calls don't need to be repeated for every component that needs the information.
12
12
 
13
13
  This package also provides a UI component, `AnalyticsConfigCheck`, which makes it easier to hide or show elements in the UI based on the analytics config stored in the cache.
14
14
 
@@ -8,6 +8,7 @@ export declare const useDatasourceConfigStore: import("pinia").SetupStoreDefinit
8
8
  showInUI: boolean;
9
9
  fields: {
10
10
  name: string;
11
+ label: string;
11
12
  showInUI: boolean;
12
13
  aggregation: boolean;
13
14
  group: boolean;
@@ -53,6 +54,7 @@ export declare const useDatasourceConfigStore: import("pinia").SetupStoreDefinit
53
54
  showInUI: boolean;
54
55
  fields: {
55
56
  name: string;
57
+ label: string;
56
58
  showInUI: boolean;
57
59
  aggregation: boolean;
58
60
  group: boolean;
@@ -96,6 +98,7 @@ export declare const useDatasourceConfigStore: import("pinia").SetupStoreDefinit
96
98
  }[] | undefined>;
97
99
  datasourceConfigError: import("vue").Ref<Error | null, Error | null>;
98
100
  datasourceConfigMap: import("vue").ComputedRef<Record<string, MappedDatasourceConfig>>;
101
+ fieldTranslationMap: import("vue").ComputedRef<Map<string, string>>;
99
102
  getFieldDataSources: import("vue").ComputedRef<(fieldName: string) => string[]>;
100
103
  isFilterValidForDatasource: import("vue").ComputedRef<({ datasource, filter, }: {
101
104
  datasource: string;
@@ -1 +1 @@
1
- {"version":3,"file":"datasource-config.d.ts","sourceRoot":"","sources":["../../../src/stores/datasource-config.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,UAAU,EAAmB,gBAAgB,EAAE,KAAK,EAAE,MAAM,qCAAqC,CAAA;AAI/G,MAAM,MAAM,sBAAsB,GAAG,gBAAgB,GAAG;IACtD,SAAS,EAAE,MAAM,CAAC,MAAM,EAAE,KAAK,CAAC,CAAA;CACjC,CAAA;AAED,eAAO,MAAM,wBAAwB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;+DA0Dd,MAAM,KAAG,MAAM,EAAE;oFAejC;QACD,UAAU,EAAE,MAAM,CAAA;QAClB,MAAM,EAAE,UAAU,CAAA;KACnB,KAAG,OAAO;;mBAlDa,OAAO,CAAC,IAAI,CAAC;oGAgFlC;QACD,UAAU,EAAE,MAAM,CAAA;QAClB,OAAO,EAAE,UAAU,EAAE,CAAA;QACrB,WAAW,CAAC,EAAE,SAAS,MAAM,EAAE,CAAA;QAC/B,2CAA2C;QAC3C,OAAO,CAAC,EAAE,SAAS,MAAM,EAAE,CAAA;KAC5B,KAAG,UAAU,EAAE;EA+ClB,CAAA"}
1
+ {"version":3,"file":"datasource-config.d.ts","sourceRoot":"","sources":["../../../src/stores/datasource-config.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,UAAU,EAAmB,gBAAgB,EAAE,KAAK,EAAE,MAAM,qCAAqC,CAAA;AAI/G,MAAM,MAAM,sBAAsB,GAAG,gBAAgB,GAAG;IACtD,SAAS,EAAE,MAAM,CAAC,MAAM,EAAE,KAAK,CAAC,CAAA;CACjC,CAAA;AAED,eAAO,MAAM,wBAAwB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;+DA6Ed,MAAM,KAAG,MAAM,EAAE;oFAejC;QACD,UAAU,EAAE,MAAM,CAAA;QAClB,MAAM,EAAE,UAAU,CAAA;KACnB,KAAG,OAAO;;mBArEa,OAAO,CAAC,IAAI,CAAC;oGAmGlC;QACD,UAAU,EAAE,MAAM,CAAA;QAClB,OAAO,EAAE,UAAU,EAAE,CAAA;QACrB,WAAW,CAAC,EAAE,SAAS,MAAM,EAAE,CAAA;QAC/B,2CAA2C;QAC3C,OAAO,CAAC,EAAE,SAAS,MAAM,EAAE,CAAA;KAC5B,KAAG,UAAU,EAAE;EAgDlB,CAAA"}
@@ -1,126 +1,135 @@
1
- import { ref as m, inject as C, computed as o, watch as R, defineComponent as D, unref as d, renderSlot as h, createCommentVNode as S } from "vue";
2
- import { defineStore as b, storeToRefs as T } from "pinia";
3
- const P = 2592e6, F = 2, I = 2e3, M = 10, U = "analytics-query-provider", k = b("analytics-config", () => {
4
- const e = m(null), u = m(null), p = C(U);
5
- p ? p.configFn().then((r) => {
6
- e.value = r;
7
- }).catch((r) => {
8
- u.value = r, e.value = {
1
+ import { ref as h, inject as R, computed as o, watch as b, defineComponent as S, unref as d, renderSlot as E, createCommentVNode as T } from "vue";
2
+ import { defineStore as w, storeToRefs as P } from "pinia";
3
+ const F = 2592e6, I = 2, M = 2e3, U = 10, k = "analytics-query-provider", L = w("analytics-config", () => {
4
+ const n = h(null), l = h(null), p = R(k);
5
+ p ? p.configFn().then((e) => {
6
+ n.value = e;
7
+ }).catch((e) => {
8
+ l.value = e, n.value = {
9
9
  analytics: null,
10
10
  requests: null
11
- }, console.warn("Error fetching analytics config"), console.warn(r);
12
- }) : (console.warn("Analytics components 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/dashboard-renderer/README.md#requirements"), u.value = new Error("No analytics bridge provided"), e.value = {
11
+ }, console.warn("Error fetching analytics config"), console.warn(e);
12
+ }) : (console.warn("Analytics components 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/dashboard-renderer/README.md#requirements"), l.value = new Error("No analytics bridge provided"), n.value = {
13
13
  analytics: null,
14
14
  requests: null
15
15
  });
16
16
  const a = o(() => {
17
- const r = e.value?.analytics?.retention_ms;
18
- return !!r && r >= P;
19
- }), f = o(() => "7d"), l = o(() => !e.value), v = o(() => !!e.value?.analytics), g = o(() => !!e.value?.analytics?.percentiles), y = () => new Promise((r) => {
20
- if (!l.value)
21
- return r();
22
- const c = R(l, () => {
23
- l.value || (c(), r());
17
+ const e = n.value?.analytics?.retention_ms;
18
+ return !!e && e >= F;
19
+ }), v = o(() => "7d"), i = o(() => !n.value), y = o(() => !!n.value?.analytics), g = o(() => !!n.value?.analytics?.percentiles), f = () => new Promise((e) => {
20
+ if (!i.value)
21
+ return e();
22
+ const c = b(i, () => {
23
+ i.value || (c(), e());
24
24
  });
25
- }), n = o(
26
- () => e.value?.ui?.maxParallelRequests ?? F
25
+ }), m = o(
26
+ () => n.value?.ui?.maxParallelRequests ?? I
27
+ ), r = o(
28
+ () => n.value?.ui?.requestInterval ?? M
27
29
  ), t = o(
28
- () => e.value?.ui?.requestInterval ?? I
29
- ), i = o(
30
- () => e.value?.ui?.requestIntervalCap ?? M
30
+ () => n.value?.ui?.requestIntervalCap ?? U
31
31
  );
32
32
  return {
33
- analyticsConfig: e,
33
+ analyticsConfig: n,
34
34
  longRetention: a,
35
- defaultQueryTimeForOrg: f,
36
- loading: l,
37
- analytics: v,
35
+ defaultQueryTimeForOrg: v,
36
+ loading: i,
37
+ analytics: y,
38
38
  percentiles: g,
39
- maxParallelRequests: n,
40
- requestInterval: t,
41
- requestIntervalCap: i,
42
- isReady: y,
43
- configError: u
39
+ maxParallelRequests: m,
40
+ requestInterval: r,
41
+ requestIntervalCap: t,
42
+ isReady: f,
43
+ configError: l
44
44
  };
45
- }), L = "analytics-query-provider", Y = b("datasource-config", () => {
46
- const e = m(void 0), u = m(null), p = C(L);
47
- p ? p.datasourceConfigFn().then((n) => {
48
- e.value = n;
49
- }).catch((n) => {
50
- u.value = n, e.value = [], console.warn("Error fetching datasource config"), console.warn(n);
51
- }) : (console.warn("Analytics components 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/dashboard-renderer/README.md#requirements"), u.value = new Error("No analytics bridge provided"), e.value = []);
52
- const a = o(() => e.value === void 0), f = async () => new Promise((n) => {
45
+ }), N = "analytics-query-provider", $ = w("datasource-config", () => {
46
+ const n = h(void 0), l = h(null), p = R(N);
47
+ p ? p.datasourceConfigFn().then((r) => {
48
+ n.value = r;
49
+ }).catch((r) => {
50
+ l.value = r, n.value = [], console.warn("Error fetching datasource config"), console.warn(r);
51
+ }) : (console.warn("Analytics components 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/dashboard-renderer/README.md#requirements"), l.value = new Error("No analytics bridge provided"), n.value = []);
52
+ const a = o(() => n.value === void 0), v = async () => new Promise((r) => {
53
53
  if (!a.value)
54
- return n();
55
- const t = R(() => a.value, (i) => {
56
- i || (t(), n());
54
+ return r();
55
+ const t = b(() => a.value, (e) => {
56
+ e || (t(), r());
57
57
  });
58
- }), l = o(() => (e.value ?? []).reduce((n, t) => {
59
- const i = t.fields.reduce((r, c) => (r[c.name] = c, r), {});
60
- return n[t.name] = {
58
+ }), i = o(() => (n.value ?? []).reduce((r, t) => {
59
+ const e = t.fields.reduce((c, u) => (c[u.name] = u, c), {});
60
+ return r[t.name] = {
61
61
  ...t,
62
- fieldsMap: i
63
- }, n;
64
- }, {})), v = o(() => (n) => a.value ? [] : (e.value ?? []).filter((t) => t.fields.some((i) => i.name === n)).map((t) => t.name)), g = o(() => ({
65
- datasource: n,
62
+ fieldsMap: e
63
+ }, r;
64
+ }, {})), y = o(() => {
65
+ const r = /* @__PURE__ */ new Map();
66
+ if (!n.value)
67
+ return r;
68
+ for (const t of n.value)
69
+ for (const e of t.fields)
70
+ r.set(e.name, e.label);
71
+ return r;
72
+ }), g = o(() => (r) => a.value ? [] : (n.value ?? []).filter((t) => t.fields.some((e) => e.name === r)).map((t) => t.name)), f = o(() => ({
73
+ datasource: r,
66
74
  filter: t
67
75
  }) => {
68
76
  if (a.value)
69
77
  return !0;
70
- const i = l.value[n];
71
- if (!i)
78
+ const e = i.value[r];
79
+ if (!e)
72
80
  return !0;
73
- const r = i.fieldsMap[t.field];
74
- return r?.filter ? r.filter.operators.flatMap((c) => c.ops).includes(t.operator) : !1;
75
- }), y = o(() => ({
76
- datasource: n,
81
+ const c = e.fieldsMap[t.field];
82
+ return c?.filter ? c.filter.operators.flatMap((u) => u.ops).includes(t.operator) : !1;
83
+ }), m = o(() => ({
84
+ datasource: r,
77
85
  filters: t,
78
- queryFields: i = void 0,
79
- metrics: r = void 0
86
+ queryFields: e = void 0,
87
+ metrics: c = void 0
80
88
  }) => {
81
- const c = t.filter((s) => g.value({ datasource: n, filter: s })), E = i ?? r;
82
- if (!E?.length)
83
- return c;
84
- const q = l.value[n];
85
- if (!q)
86
- return c;
87
- const A = E.map((s) => q.fieldsMap[s]).filter((s) => s !== void 0).filter((s) => s.supportedDimensions !== void 0).map((s) => new Set(s.supportedDimensions));
88
- if (!A.length)
89
- return c;
90
- const w = A.reduce((s, _) => _.intersection(s));
91
- return c.filter((s) => w.has(s.field));
89
+ const u = t.filter((s) => f.value({ datasource: r, filter: s })), q = e ?? c;
90
+ if (!q?.length)
91
+ return u;
92
+ const A = i.value[r];
93
+ if (!A)
94
+ return u;
95
+ const C = q.map((s) => A.fieldsMap[s]).filter((s) => s !== void 0).filter((s) => s.supportedDimensions !== void 0).map((s) => new Set(s.supportedDimensions));
96
+ if (!C.length)
97
+ return u;
98
+ const _ = C.reduce((s, D) => D.intersection(s));
99
+ return u.filter((s) => _.has(s.field));
92
100
  });
93
101
  return {
94
- datasourceConfig: e,
95
- datasourceConfigError: u,
96
- datasourceConfigMap: l,
97
- getFieldDataSources: v,
98
- isFilterValidForDatasource: g,
102
+ datasourceConfig: n,
103
+ datasourceConfigError: l,
104
+ datasourceConfigMap: i,
105
+ fieldTranslationMap: y,
106
+ getFieldDataSources: g,
107
+ isFilterValidForDatasource: f,
99
108
  loading: a,
100
- isReady: f,
101
- stripUnknownFilters: y
109
+ isReady: v,
110
+ stripUnknownFilters: m
102
111
  };
103
- }), $ = /* @__PURE__ */ D({
112
+ }), j = /* @__PURE__ */ S({
104
113
  __name: "AnalyticsConfigCheck",
105
114
  props: {
106
115
  requireAnalytics: { type: Boolean },
107
116
  requirePercentiles: { type: Boolean }
108
117
  },
109
- setup(e) {
110
- const u = e, p = k(), { analytics: a, percentiles: f, configError: l, loading: v } = T(p), g = o(
111
- () => (u.requireAnalytics ? a.value : !0) && (u.requirePercentiles ? f.value : !0)
118
+ setup(n) {
119
+ const l = n, p = L(), { analytics: a, percentiles: v, configError: i, loading: y } = P(p), g = o(
120
+ () => (l.requireAnalytics ? a.value : !0) && (l.requirePercentiles ? v.value : !0)
112
121
  );
113
- return (y, n) => !d(v) && d(l) ? h(y.$slots, "error", { error: d(l) }, void 0, void 0, 0) : !d(v) && g.value ? h(y.$slots, "default", {
122
+ return (f, m) => !d(y) && d(i) ? E(f.$slots, "error", { error: d(i) }, void 0, void 0, 0) : !d(y) && g.value ? E(f.$slots, "default", {
114
123
  hasAnalytics: d(a),
115
- hasPercentiles: d(f)
116
- }, void 0, void 0, 1) : d(v) ? S("", !0) : h(y.$slots, "fallback", {
124
+ hasPercentiles: d(v)
125
+ }, void 0, void 0, 1) : d(y) ? T("", !0) : E(f.$slots, "fallback", {
117
126
  hasAnalytics: d(a),
118
- hasPercentiles: d(f)
127
+ hasPercentiles: d(v)
119
128
  }, void 0, void 0, 2);
120
129
  }
121
130
  });
122
131
  export {
123
- $ as AnalyticsConfigCheck,
124
- k as useAnalyticsConfigStore,
125
- Y as useDatasourceConfigStore
132
+ j as AnalyticsConfigCheck,
133
+ L as useAnalyticsConfigStore,
134
+ $ as useDatasourceConfigStore
126
135
  };
@@ -1 +1 @@
1
- (function(u,e){typeof exports=="object"&&typeof module<"u"?e(exports,require("vue"),require("pinia")):typeof define=="function"&&define.amd?define(["exports","vue","pinia"],e):(u=typeof globalThis<"u"?globalThis:u||self,e(u["kong-ui-public-vitals-config-store"]={},u.Vue,u.pinia))})(this,(function(u,e,E){"use strict";const R="analytics-query-provider",h=E.defineStore("analytics-config",()=>{const n=e.ref(null),d=e.ref(null),f=e.inject(R);f?f.configFn().then(t=>{n.value=t}).catch(t=>{d.value=t,n.value={analytics:null,requests:null},console.warn("Error fetching analytics config"),console.warn(t)}):(console.warn("Analytics components 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/dashboard-renderer/README.md#requirements"),d.value=new Error("No analytics bridge provided"),n.value={analytics:null,requests:null});const a=e.computed(()=>{const t=n.value?.analytics?.retention_ms;return!!t&&t>=2592e6}),p=e.computed(()=>"7d"),c=e.computed(()=>!n.value),y=e.computed(()=>!!n.value?.analytics),g=e.computed(()=>!!n.value?.analytics?.percentiles),m=()=>new Promise(t=>{if(!c.value)return t();const l=e.watch(c,()=>{c.value||(l(),t())})}),r=e.computed(()=>n.value?.ui?.maxParallelRequests??2),o=e.computed(()=>n.value?.ui?.requestInterval??2e3),s=e.computed(()=>n.value?.ui?.requestIntervalCap??10);return{analyticsConfig:n,longRetention:a,defaultQueryTimeForOrg:p,loading:c,analytics:y,percentiles:g,maxParallelRequests:r,requestInterval:o,requestIntervalCap:s,isReady:m,configError:d}}),T="analytics-query-provider",_=E.defineStore("datasource-config",()=>{const n=e.ref(void 0),d=e.ref(null),f=e.inject(T);f?f.datasourceConfigFn().then(r=>{n.value=r}).catch(r=>{d.value=r,n.value=[],console.warn("Error fetching datasource config"),console.warn(r)}):(console.warn("Analytics components 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/dashboard-renderer/README.md#requirements"),d.value=new Error("No analytics bridge provided"),n.value=[]);const a=e.computed(()=>n.value===void 0),p=async()=>new Promise(r=>{if(!a.value)return r();const o=e.watch(()=>a.value,s=>{s||(o(),r())})}),c=e.computed(()=>(n.value??[]).reduce((r,o)=>{const s=o.fields.reduce((t,l)=>(t[l.name]=l,t),{});return r[o.name]={...o,fieldsMap:s},r},{})),y=e.computed(()=>r=>a.value?[]:(n.value??[]).filter(o=>o.fields.some(s=>s.name===r)).map(o=>o.name)),g=e.computed(()=>({datasource:r,filter:o})=>{if(a.value)return!0;const s=c.value[r];if(!s)return!0;const t=s.fieldsMap[o.field];return t?.filter?t.filter.operators.flatMap(l=>l.ops).includes(o.operator):!1}),m=e.computed(()=>({datasource:r,filters:o,queryFields:s=void 0,metrics:t=void 0})=>{const l=o.filter(i=>g.value({datasource:r,filter:i})),A=s??t;if(!A?.length)return l;const S=c.value[r];if(!S)return l;const q=A.map(i=>S.fieldsMap[i]).filter(i=>i!==void 0).filter(i=>i.supportedDimensions!==void 0).map(i=>new Set(i.supportedDimensions));if(!q.length)return l;const C=q.reduce((i,D)=>D.intersection(i));return l.filter(i=>C.has(i.field))});return{datasourceConfig:n,datasourceConfigError:d,datasourceConfigMap:c,getFieldDataSources:y,isFilterValidForDatasource:g,loading:a,isReady:p,stripUnknownFilters:m}}),v=e.defineComponent({__name:"AnalyticsConfigCheck",props:{requireAnalytics:{type:Boolean},requirePercentiles:{type:Boolean}},setup(n){const d=n,f=h(),{analytics:a,percentiles:p,configError:c,loading:y}=E.storeToRefs(f),g=e.computed(()=>(d.requireAnalytics?a.value:!0)&&(d.requirePercentiles?p.value:!0));return(m,r)=>!e.unref(y)&&e.unref(c)?e.renderSlot(m.$slots,"error",{error:e.unref(c)},void 0,void 0,0):!e.unref(y)&&g.value?e.renderSlot(m.$slots,"default",{hasAnalytics:e.unref(a),hasPercentiles:e.unref(p)},void 0,void 0,1):e.unref(y)?e.createCommentVNode("",!0):e.renderSlot(m.$slots,"fallback",{hasAnalytics:e.unref(a),hasPercentiles:e.unref(p)},void 0,void 0,2)}});u.AnalyticsConfigCheck=v,u.useAnalyticsConfigStore=h,u.useDatasourceConfigStore=_,Object.defineProperty(u,Symbol.toStringTag,{value:"Module"})}));
1
+ (function(c,e){typeof exports=="object"&&typeof module<"u"?e(exports,require("vue"),require("pinia")):typeof define=="function"&&define.amd?define(["exports","vue","pinia"],e):(c=typeof globalThis<"u"?globalThis:c||self,e(c["kong-ui-public-vitals-config-store"]={},c.Vue,c.pinia))})(this,(function(c,e,h){"use strict";const v="analytics-query-provider",A=h.defineStore("analytics-config",()=>{const r=e.ref(null),l=e.ref(null),p=e.inject(v);p?p.configFn().then(n=>{r.value=n}).catch(n=>{l.value=n,r.value={analytics:null,requests:null},console.warn("Error fetching analytics config"),console.warn(n)}):(console.warn("Analytics components 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/dashboard-renderer/README.md#requirements"),l.value=new Error("No analytics bridge provided"),r.value={analytics:null,requests:null});const s=e.computed(()=>{const n=r.value?.analytics?.retention_ms;return!!n&&n>=2592e6}),m=e.computed(()=>"7d"),a=e.computed(()=>!r.value),y=e.computed(()=>!!r.value?.analytics),g=e.computed(()=>!!r.value?.analytics?.percentiles),f=()=>new Promise(n=>{if(!a.value)return n();const u=e.watch(a,()=>{a.value||(u(),n())})}),E=e.computed(()=>r.value?.ui?.maxParallelRequests??2),t=e.computed(()=>r.value?.ui?.requestInterval??2e3),o=e.computed(()=>r.value?.ui?.requestIntervalCap??10);return{analyticsConfig:r,longRetention:s,defaultQueryTimeForOrg:m,loading:a,analytics:y,percentiles:g,maxParallelRequests:E,requestInterval:t,requestIntervalCap:o,isReady:f,configError:l}}),R="analytics-query-provider",_=h.defineStore("datasource-config",()=>{const r=e.ref(void 0),l=e.ref(null),p=e.inject(R);p?p.datasourceConfigFn().then(t=>{r.value=t}).catch(t=>{l.value=t,r.value=[],console.warn("Error fetching datasource config"),console.warn(t)}):(console.warn("Analytics components 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/dashboard-renderer/README.md#requirements"),l.value=new Error("No analytics bridge provided"),r.value=[]);const s=e.computed(()=>r.value===void 0),m=async()=>new Promise(t=>{if(!s.value)return t();const o=e.watch(()=>s.value,n=>{n||(o(),t())})}),a=e.computed(()=>(r.value??[]).reduce((t,o)=>{const n=o.fields.reduce((u,d)=>(u[d.name]=d,u),{});return t[o.name]={...o,fieldsMap:n},t},{})),y=e.computed(()=>{const t=new Map;if(!r.value)return t;for(const o of r.value)for(const n of o.fields)t.set(n.name,n.label);return t}),g=e.computed(()=>t=>s.value?[]:(r.value??[]).filter(o=>o.fields.some(n=>n.name===t)).map(o=>o.name)),f=e.computed(()=>({datasource:t,filter:o})=>{if(s.value)return!0;const n=a.value[t];if(!n)return!0;const u=n.fieldsMap[o.field];return u?.filter?u.filter.operators.flatMap(d=>d.ops).includes(o.operator):!1}),E=e.computed(()=>({datasource:t,filters:o,queryFields:n=void 0,metrics:u=void 0})=>{const d=o.filter(i=>f.value({datasource:t,filter:i})),S=n??u;if(!S?.length)return d;const T=a.value[t];if(!T)return d;const q=S.map(i=>T.fieldsMap[i]).filter(i=>i!==void 0).filter(i=>i.supportedDimensions!==void 0).map(i=>new Set(i.supportedDimensions));if(!q.length)return d;const b=q.reduce((i,D)=>D.intersection(i));return d.filter(i=>b.has(i.field))});return{datasourceConfig:r,datasourceConfigError:l,datasourceConfigMap:a,fieldTranslationMap:y,getFieldDataSources:g,isFilterValidForDatasource:f,loading:s,isReady:m,stripUnknownFilters:E}}),C=e.defineComponent({__name:"AnalyticsConfigCheck",props:{requireAnalytics:{type:Boolean},requirePercentiles:{type:Boolean}},setup(r){const l=r,p=A(),{analytics:s,percentiles:m,configError:a,loading:y}=h.storeToRefs(p),g=e.computed(()=>(l.requireAnalytics?s.value:!0)&&(l.requirePercentiles?m.value:!0));return(f,E)=>!e.unref(y)&&e.unref(a)?e.renderSlot(f.$slots,"error",{error:e.unref(a)},void 0,void 0,0):!e.unref(y)&&g.value?e.renderSlot(f.$slots,"default",{hasAnalytics:e.unref(s),hasPercentiles:e.unref(m)},void 0,void 0,1):e.unref(y)?e.createCommentVNode("",!0):e.renderSlot(f.$slots,"fallback",{hasAnalytics:e.unref(s),hasPercentiles:e.unref(m)},void 0,void 0,2)}});c.AnalyticsConfigCheck=C,c.useAnalyticsConfigStore=A,c.useDatasourceConfigStore=_,Object.defineProperty(c,Symbol.toStringTag,{value:"Module"})}));
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@kong-ui-public/analytics-config-store",
3
- "version": "1.4.66",
3
+ "version": "1.4.67-pr.3942.72fef96ff.0",
4
4
  "type": "module",
5
5
  "main": "./dist/vitals-config-store.umd.js",
6
6
  "module": "./dist/vitals-config-store.es.js",
@@ -21,7 +21,7 @@
21
21
  "access": "public"
22
22
  },
23
23
  "devDependencies": {
24
- "@kong-ui-public/analytics-utilities": "^13.5.2",
24
+ "@kong-ui-public/analytics-utilities": "^13.5.3-pr.3942.72fef96ff.0",
25
25
  "pinia": "^4.0.3",
26
26
  "vue": "^3.5.43"
27
27
  },