@kong-ui-public/dashboard-renderer 0.22.3 → 0.22.4
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.
|
@@ -1764,7 +1764,7 @@ const Se = "24px", Pn = (e, t) => {
|
|
|
1764
1764
|
for (const [i, n] of t)
|
|
1765
1765
|
r[i] = n;
|
|
1766
1766
|
return r;
|
|
1767
|
-
}, Un = (e) => (Ye("data-v-
|
|
1767
|
+
}, Un = (e) => (Ye("data-v-a3352b0f"), e = e(), We(), e), Fn = ["aria-hidden"], Vn = {
|
|
1768
1768
|
key: 0,
|
|
1769
1769
|
"data-testid": "kui-icon-svg-title"
|
|
1770
1770
|
}, Kn = /* @__PURE__ */ Un(() => /* @__PURE__ */ V("path", {
|
|
@@ -1863,7 +1863,7 @@ const Se = "24px", Pn = (e, t) => {
|
|
|
1863
1863
|
_: 1
|
|
1864
1864
|
}, 8, ["aria-hidden", "style"]));
|
|
1865
1865
|
}
|
|
1866
|
-
}), Mn = /* @__PURE__ */ Pn(Bn, [["__scopeId", "data-v-
|
|
1866
|
+
}), Mn = /* @__PURE__ */ Pn(Bn, [["__scopeId", "data-v-a3352b0f"]]), Gn = [];
|
|
1867
1867
|
for (let e = 0; e < 256; ++e)
|
|
1868
1868
|
Gn.push((e + 256).toString(16).slice(1));
|
|
1869
1869
|
typeof crypto < "u" && crypto.randomUUID && crypto.randomUUID.bind(crypto);
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
(function(d,n){typeof exports=="object"&&typeof module<"u"?n(exports,require("vue"),require("@kong-ui-public/analytics-chart"),require("swrv"),require("axios"),require("@kong-ui-public/i18n"),require("@kong-ui-public/analytics-metric-provider"),require("@kong-ui-public/analytics-utilities"),require("@kong/kongponents"),require("vue-router"),require("@kong-ui-public/analytics-config-store")):typeof define=="function"&&define.amd?define(["exports","vue","@kong-ui-public/analytics-chart","swrv","axios","@kong-ui-public/i18n","@kong-ui-public/analytics-metric-provider","@kong-ui-public/analytics-utilities","@kong/kongponents","vue-router","@kong-ui-public/analytics-config-store"],n):(d=typeof globalThis<"u"?globalThis:d||self,n(d["kong-ui-public-dashboard-renderer"]={},d.Vue,d["kong-ui-public-analytics-chart"],d.swrv,d.axios,d["kong-ui-public-i18n"],d["kong-ui-public-analytics-metric-provider"],d["kong-ui-public-analytics-utilities"],d.Kongponents,d.VueRouter,d["kong-ui-public-analytics-config-store"]))})(this,function(d,n,E,je,Z,j,W,Q,yn,fn,Ve){"use strict";const F="analytics-query-provider",P="{entity-id}",J="{cp-id}",X="{timeframe}";var b=(e=>(e.HorizontalBar="horizontal_bar",e.VerticalBar="vertical_bar",e.Gauge="gauge",e.TimeseriesLine="timeseries_line",e.GoldenSignals="golden_signals",e.TopN="top_n",e.Slottable="slottable",e))(b||{});const V={type:"string"},L={type:"string"},ee={type:"boolean"},te={type:["object","array"],items:{type:"string"},additionalProperties:{type:"string"}},re={type:"object",properties:{type:{type:"string",enum:["slottable"]},id:{type:"string"}},required:["type","id"],additionalProperties:!1},ne={type:"object",properties:{type:{type:"string",enum:["horizontal_bar","vertical_bar"]},stacked:{type:"boolean"},chartDatasetColors:te,syntheticsDataKey:V,chartTitle:L,allowCsvExport:ee},required:["type"],additionalProperties:!1},ie={type:"object",properties:{type:{type:"string",enum:["timeseries_line"]},stacked:{type:"boolean"},chartDatasetColors:te,syntheticsDataKey:V,chartTitle:L,allowCsvExport:ee},required:["type"],additionalProperties:!1},oe={type:"object",properties:{type:{type:"string",enum:["gauge"]},metricDisplay:{type:"string",enum:Object.values(E.ChartMetricDisplay)},reverseDataset:{type:"boolean"},numerator:{type:"number"},syntheticsDataKey:V,chartTitle:L},required:["type"],additionalProperties:!1},ae={type:"object",properties:{chartTitle:L,syntheticsDataKey:V,type:{type:"string",enum:["top_n"]},description:{type:"string"},entityLink:{type:"string"}},required:["type"],additionalProperties:!1},se={type:"object",properties:{chartTitle:L,type:{type:"string",enum:["golden_signals"]},longCardTitles:{type:"boolean"},description:{type:"string"},percentileLatency:{type:"boolean"}},required:["type"]},ce={type:"object",description:"A query to launch at the API",properties:{metrics:{type:"array",description:"List of aggregated metrics to collect across the requested time span.",items:{type:"string",enum:["request_count","request_per_minute","response_latency_p99","response_latency_p95","response_latency_p50","response_latency_average","upstream_latency_p99","upstream_latency_p95","upstream_latency_p50","upstream_latency_average","kong_latency_p99","kong_latency_p95","kong_latency_p50","kong_latency_average","response_size_p99","response_size_p95","response_size_p50","request_size_p99","request_size_p95","request_size_p50","request_size_average","response_size_average"]}},dimensions:{type:"array",description:"List of attributes or entity types to group by.",minItems:0,maxItems:2,items:{type:"string",enum:["api_product","api_product_version","application","consumer","control_plane","control_plane_group","data_plane_node","gateway_service","route","status_code","status_code_grouped","time"]}},filters:{type:"array",description:"A list of filters to apply to the query.",items:{type:"object",description:"A filter that specifies which data to include in the query",properties:{dimension:{type:"string",enum:["api_product","api_product_version","application","consumer","control_plane","control_plane_group","data_plane_node","gateway_service","route","status_code","status_code_grouped","time"]},type:{type:"string",enum:["in","not_in","selector"]},values:{type:"array",items:{type:"string"}}},required:["dimension","type","values"]}},granularity_ms:{type:"number",description:'Force time grouping into buckets of this duration in milliseconds. Only has an effect if "time" is in the "dimensions" list.',minimum:6e4},time_range:{description:"The time range to query.",oneOf:[{type:"object",properties:{tz:{type:"string",default:"Etc/UTC"},type:{type:"string",enum:["relative"]},time_range:{type:"string",enum:["15m","1h","6h","12h","24h","7d","30d","current_week","current_month","previous_week","previous_month"],default:"1h"}},required:["type","time_range"]},{type:"object",description:"A duration representing an exact start and end time.",properties:{tz:{type:"string",default:"Etc/UTC"},type:{type:"string",enum:["absolute"]},start:{type:"string"},end:{type:"string"}},required:["type"]}],default:{type:"relative",time_range:"1h"}},meta:{type:"object"}}},le={type:"object",properties:{query:ce,chart:{oneOf:[ne,oe,ie,se,ae,re]}},required:["query","chart"],additionalProperties:!1},ue={type:"object",properties:{position:{type:"object",properties:{col:{type:"number"},row:{type:"number"}},description:"Position of the tile in the grid.",required:["col","row"],additionalProperties:!1},size:{type:"object",properties:{cols:{type:"number"},rows:{type:"number"},fitToContent:{type:"boolean"}},description:"Number of columns and rows the tile occupies. If fitToContent is true for every tile in a row, and each tile only occupies 1 row, then the row will auto-fit to its content.",required:["cols","rows"],additionalProperties:!1}},required:["position","size"],additionalProperties:!1},pe={type:"object",properties:{definition:le,layout:ue},required:["definition","layout"],additionalProperties:!1},$e={type:"object",properties:{tiles:{type:"array",items:pe},tileHeight:{type:"number",description:"Height of each tile in pixels. Default: 170"},gridSize:{type:"object",properties:{cols:{type:"number"},rows:{type:"number"}},description:"Number of columns and rows in the grid.",required:["cols","rows"],additionalProperties:!1}},required:["tiles","gridSize"],additionalProperties:!1};var de=(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))(de||{});const ze=e=>{var t,r,o,i,a;return e?!!((t=Object.keys(e))!=null&&t.length||(r=e.data)!=null&&r.length||(i=(o=e.data)==null?void 0:o.data)!=null&&i.length||!((a=e.data)!=null&&a.data)&&typeof e.data=="object"&&Object.keys(e==null?void 0:e.data).length):!1};function Ue(e=n.ref({}),t,r,o=ze){const i=n.ref("PENDING");return n.watchEffect(()=>{const a=o(e.value);if(e.value&&a&&r.value){i.value="VALIDATING_HAS_DATA";return}if(e.value&&r.value){i.value="VALIDATING";return}if(e.value&&t.value){i.value="STALE_IF_ERROR";return}if(e.value===void 0&&!t.value){i.value="PENDING";return}if(e.value&&!t.value&&a){i.value="SUCCESS_HAS_DATA";return}if(e.value&&!t.value){i.value="SUCCESS";return}e.value===void 0&&t&&(i.value="ERROR")}),{state:i,swrvState:de}}const Fe={renderer:{noQueryBridge:"No query bridge provided. Unable to render dashboard.",trendRange:{"24h":"Last 24-Hour Summary","30d":"Last 30-Day Summary"}},queryDataProvider:{timeRangeExceeded:"The time range for this report is outside of your organization's data retention period"}};function Pe(){const e=j.createI18n("en-us",Fe);return{i18n:e,i18nT:j.i18nTComponent(e)}}const ye={useI18n:Pe},$=n.defineComponent({__name:"QueryDataProvider",props:{context:{},query:{},queryReady:{type:Boolean}},emits:["queryComplete"],setup(e,{emit:t}){const r=e,o=t,{i18n:i}=ye.useI18n(),a=n.inject(F),s=()=>r.queryReady&&a?JSON.stringify([r.query,r.context]):null,c=new AbortController;n.onUnmounted(()=>{c.abort()});const{data:p,error:u,isValidating:m}=je(s,async()=>{var C,R,x,O;try{const f=[];r.query.filters&&f.push(...r.query.filters),f.push(...r.context.filters);const U={...r.query,time_range:{...r.context.timeSpec,tz:r.context.tz},filters:f};return a==null?void 0:a.queryFn(U,c)}catch(f){y.value=((R=(C=f==null?void 0:f.response)==null?void 0:C.data)==null?void 0:R.message)==="Range not allowed for this tier"?i.t("queryDataProvider.timeRangeExceeded"):((O=(x=f==null?void 0:f.response)==null?void 0:x.data)==null?void 0:O.message)||(f==null?void 0:f.message)}finally{o("queryComplete")}},{refreshInterval:r.context.refreshInterval,revalidateOnFocus:!1}),{state:l,swrvState:h}=Ue(p,u,m),y=n.ref(null),S=n.computed(()=>l.value===h.ERROR||!!y.value),g=n.computed(()=>!r.queryReady||l.value===h.PENDING);return(C,R)=>{const x=n.resolveComponent("KSkeleton"),O=n.resolveComponent("KEmptyState");return g.value||!n.unref(p)&&!S.value?(n.openBlock(),n.createBlock(x,{key:0,class:"chart-skeleton",type:"table"})):S.value?(n.openBlock(),n.createBlock(O,{key:1,"action-button-visible":!1,"data-testid":"chart-empty-state","icon-variant":"error"},{default:n.withCtx(()=>[n.createTextVNode(n.toDisplayString(y.value),1)]),_:1})):n.unref(p)?n.renderSlot(C.$slots,"default",{key:2,data:n.unref(p)}):n.createCommentVNode("",!0)}}}),He={class:"analytics-chart"},Ke=n.defineComponent({__name:"SimpleChartRenderer",props:{query:{},context:{},queryReady:{type:Boolean},chartOptions:{},height:{}},setup(e){n.useCssVars(i=>({"8c62ff26":`${i.height}px`}));const t=e,r={[b.Gauge]:E.ChartTypesSimple.GAUGE},o=n.computed(()=>({...t.chartOptions,type:r[t.chartOptions.type]}));return(i,a)=>(n.openBlock(),n.createBlock($,{context:i.context,query:i.query,"query-ready":i.queryReady},{default:n.withCtx(({data:s})=>[n.createElementVNode("div",He,[n.createVNode(n.unref(E.SimpleChart),{"chart-data":s,"chart-options":o.value,"synthetics-data-key":i.chartOptions.syntheticsDataKey},null,8,["chart-data","chart-options","synthetics-data-key"])])]),_:1},8,["context","query","query-ready"]))}}),I=(e,t)=>{const r=e.__vccOpts||e;for(const[o,i]of t)r[o]=i;return r},Me=I(Ke,[["__scopeId","data-v-f0f6ed41"]]),Ge={class:"analytics-chart"},fe=I(n.defineComponent({__name:"BarChartRenderer",props:{query:{},context:{},queryReady:{type:Boolean},chartOptions:{},height:{}},setup(e){n.useCssVars(i=>({"1eed717c":`${i.height}px`}));const t=e,r={[b.HorizontalBar]:E.ChartTypes.HORIZONTAL_BAR,[b.VerticalBar]:E.ChartTypes.VERTICAL_BAR},o=n.computed(()=>({type:r[t.chartOptions.type],stacked:t.chartOptions.stacked,chartDatasetColors:t.chartOptions.chartDatasetColors}));return(i,a)=>(n.openBlock(),n.createBlock($,{context:i.context,query:i.query,"query-ready":i.queryReady},{default:n.withCtx(({data:s})=>[n.createElementVNode("div",Ge,[n.createVNode(n.unref(E.AnalyticsChart),{"allow-csv-export":i.chartOptions.allowCsvExport,"chart-data":s,"chart-options":o.value,"chart-title":i.chartOptions.chartTitle,"legend-position":"bottom","show-annotations":!1,"synthetics-data-key":i.chartOptions.syntheticsDataKey,"tooltip-title":""},null,8,["allow-csv-export","chart-data","chart-options","chart-title","synthetics-data-key"])])]),_:1},8,["context","query","query-ready"]))}}),[["__scopeId","data-v-36598a1b"]]),Ye={class:"analytics-chart"},Ze=I(n.defineComponent({__name:"TimeseriesChartRenderer",props:{query:{},context:{},queryReady:{type:Boolean},chartOptions:{},height:{}},setup(e){n.useCssVars(i=>({"4efa9c90":`${i.height}px`}));const t=e,r={[b.TimeseriesLine]:E.ChartTypes.TIMESERIES_LINE},o=n.computed(()=>{const i=t.chartOptions.stacked??!1;return{type:r[t.chartOptions.type],stacked:i,chartDatasetColors:t.chartOptions.chartDatasetColors}});return(i,a)=>(n.openBlock(),n.createBlock($,{context:i.context,query:i.query,"query-ready":i.queryReady},{default:n.withCtx(({data:s})=>[n.createElementVNode("div",Ye,[n.createVNode(n.unref(E.AnalyticsChart),{"allow-csv-export":i.chartOptions.allowCsvExport,"chart-data":s,"chart-options":o.value,"chart-title":i.chartOptions.chartTitle,"legend-position":"bottom","synthetics-data-key":i.chartOptions.syntheticsDataKey,"tooltip-title":""},null,8,["allow-csv-export","chart-data","chart-options","chart-title","synthetics-data-key"])])]),_:1},8,["context","query","query-ready"]))}}),[["__scopeId","data-v-ceb07ca8"]]),We={class:"metric-card-tile-wrapper"},Qe=I(n.defineComponent({__name:"GoldenSignalsRenderer",props:{query:{},context:{},queryReady:{type:Boolean},chartOptions:{},height:{}},setup(e){const t=e,r=n.computed(()=>{const i=t.context.timeSpec;if(i.type==="absolute")return new Q.Timeframe({key:"custom",timeframeText:"custom",display:"custom",startCustom:i.start,endCustom:i.end,timeframeLength:()=>0,defaultResponseGranularity:"daily",dataGranularity:"daily",isRelative:!1,allowedTiers:["free","plus","enterprise"]});const a=Q.TimePeriods.get(i.time_range);if(!a)throw new Error("Unknown time range");return a}),o=n.computed(()=>({overrideTimeframe:r.value,tz:t.context.tz,additionalFilter:t.context.filters,longCardTitles:t.chartOptions.longCardTitles,containerTitle:t.chartOptions.chartTitle,description:t.chartOptions.description,percentileLatency:t.chartOptions.percentileLatency,refreshInterval:t.context.refreshInterval,queryReady:t.queryReady}));return(i,a)=>(n.openBlock(),n.createElementBlock("div",We,[n.createVNode(n.unref(W.MetricsProvider),n.normalizeProps(n.guardReactiveProps(o.value)),{default:n.withCtx(()=>[n.createVNode(n.unref(W.MetricsConsumer))]),_:1},16)]))}}),[["__scopeId","data-v-a637d856"]]),me="20px";var N=(e=>(e[e.Loading=0]="Loading",e[e.Idle=1]="Idle",e[e.NoResults=2]="NoResults",e[e.Error=3]="Error",e))(N||{});function Je(){return{getAxiosInstance:(e={})=>{try{const t=n.inject("get-axios-instance",void 0);return typeof t=="function"?t(e):Z.create({withCredentials:!0,timeout:3e4,...e})}catch(t){return console.warn("getAxiosInstance:",t.message||t),Z.create({withCredentials:!0,timeout:3e4,...e})}},getTraceIdFromError:e=>{var t;return((t=e==null?void 0:e.response)==null?void 0:t.headers["x-datadog-trace-id"])||""}}}function Xe(){return{debounce:(e,t)=>{let r;return(...o)=>{clearTimeout(r),r=window==null?void 0:window.setTimeout(()=>{e(...o)},t)}}}}function H(e={}){const{getAxiosInstance:t}=Je();return{axiosInstance:t(e)}}const et={actions:{copyId:"Copy ID",copied_id:'Copied "{id}" to the clipboard',copyToClipboard:"Copied successfully!",copyToClipboardFailed:"Failed to copy to the clipboard"}},tt={message:"Are you sure you want to delete this {entityType}?",messageWithName:"Are you sure you want to delete this {entityType} {entityName}?"},rt={actions:{viewConfiguration:"View Configuration",save:"Save",cancel:"Cancel",back:"Back"},configuration:{title:"Configuration",message:"Export configurations for core Kong Gateway objects, like services, routes, and plugins, to either YAML or JSON. This allows for straightforward importing into APIOps tools like decK with YAML, or Insomnia and cURL with JSON.",yaml:"YAML",json:"JSON"},errors:{edit:"The entity could not be edited at this time."}},nt={emptyState:{noSearchResultsTitle:"No results found",noSearchResultsMessage:"Please adjust the criteria and try again.",noSearchResultsCtaText:"Clear"}},it={title:"Configuration",actions:{copy:"Copy JSON"},sections:{advanced:"Advanced",plugin:"Plugin Specific Configuration"},commonFields:{id_label:"ID",name_label:"Name",enabled_label:"Enabled",enabled_tooltip:"Enabled is FTW",updated_at_label:"Last Updated",created_at_label:"Created",tags_label:"Tags",link:"Link"},statusBadge:{enabledLabel:"Enabled",disabledLabel:"Disabled"},copy:{tooltip:"Copy {label}",success:"Copied!"},errors:{load:"The entity configuration data could not be loaded at this time.",copy:"Failed to copy to clipboard"},general:{entryTitle:"Entry {index}",structuredFormat:"Structured"}},ot={filterButtonText:"Filter",fieldLabel:"Filter by:",inputPlaceholder:"Enter a value",selectPlaceholder:"Select an item",applyButtonText:"Apply",clearButtonText:"Clear",clearAllButtonText:"Clear all filters"},at={errors:{fetch:"Could not fetch available items",invalid:"Please select a valid value"}},st={unexpected:"An unexpected error has occurred",dataKeyUndefined:'The data key "{dataKey}" does not exist in the response.'},ct={utf8Name:"The name can be any string containing characters, letters, numbers, or the following characters: ., -, _, or ~. Do not use spaces."},lt={enable:{title:"Enable {entityType}",message:"Are you sure you want to enable the {entityType} {entityName}?",confirmText:"Yes, enable"},disable:{title:"Disable {entityType}",message:"Are you sure you want to disable the {entityType} {entityName}?",confirmText:"Yes, disable"}},ut={global:et,deleteModal:tt,baseForm:rt,baseTable:nt,baseConfigCard:it,filter:ot,debouncedFilter:at,errors:st,validationErrors:ct,toggleModal:lt};function z(){const e=j.createI18n("en-us",ut);return{i18n:e,i18nT:j.i18nTComponent(e)}}function he(){const e=(r,o)=>(o==null?void 0:o[r])??void 0,t=(r,o)=>{if(r.length!==o.length)return!1;const i=new Set([...r,...o]);for(const a of i){const s=r.filter(p=>p===a).length,c=o.filter(p=>p===a).length;if(s!==c)return!1}return!0};return{getPropValue:e,objectsAreEqual:(r,o,i)=>{if(i){if(Object.keys(r).length===Object.keys(o).length)for(const a in r)if(Array.isArray(r[a])&&Array.isArray(o[a])){if(t(r[a],o[a]))continue;return!1}else{if(r[a]===o[a])continue;return!1}else return!1;return!0}try{return JSON.stringify(r)===JSON.stringify(o)}catch{return!1}},sortAlpha:r=>(o,i)=>{let a=o[r]===void 0||o[r]===null?"":o[r],s=i[r]===void 0||i[r]===null?"":i[r];return Array.isArray(o[r])&&(a=o[r][0]),Array.isArray(i[r])&&(s=i[r][0]),a.localeCompare(s)},isValidUuid:r=>r?/[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}/.test(r):!1}}function pt(e,t,r,o={fetchedItemsKey:"data",searchKeys:["id"]}){r||(r="1000");const{axiosInstance:i}=H(e.axiosRequestConfig),{i18n:{t:a}}=z(),{debounce:s}=Xe(),c=s(async f=>{await O(f)},200),p=n.ref(!1),u=n.ref(""),m=n.ref(""),l=n.ref([]),h=n.ref([]),y=n.ref(void 0),S=n.unref(t);let g=`${e.apiBaseUrl}${S}`;e.app==="konnect"?g=g.replace(/{controlPlaneId}/gi,(e==null?void 0:e.controlPlaneId)||""):e.app==="kongManager"&&(g=g.replace(/\/{workspace}/gi,e!=null&&e.workspace?`/${e.workspace}`:""));const{isValidUuid:C}=he(),R=async()=>{try{p.value=!0;const{data:f}=await i.get(`${g}?size=${r}`);f!=null&&f.next||(y.value=o.fetchedItemsKey in f?f[o.fetchedItemsKey]:[]),h.value=o.fetchedItemsKey in f?f[o.fetchedItemsKey]:[],l.value=h.value}catch{l.value=[],u.value=a("debouncedFilter.errors.fetch")}finally{p.value=!1}},x=n.ref(""),O=async f=>{var U,De,Be;if(x.value!==f)if(x.value=f||"",y.value===void 0)try{if(p.value=!0,u.value="",m.value="",e.app==="konnect"){let w=g+"";f&&(w+=`/${f}`);const{data:T}=await i.get(`${w}?size=${r}`);o.fetchedItemsKey in T?l.value=T[o.fetchedItemsKey]:T!=null&&T.id?l.value=[T]:l.value=[]}else if(f){const w=[];C(f)&&o.searchKeys.includes("id")?w.push((async()=>{const{data:k}=await i.get(`${g}/${f}`);return[k[o.fetchedItemsKey]??k]})()):w.push(...o.searchKeys.filter(k=>k!=="id").map(async k=>{const{data:A}=await i.get(`${g}?${k}=${f}`);return A[o.fetchedItemsKey]}));const T=await Promise.all(w),B=new Set;l.value=[],(U=T==null?void 0:T.forEach)==null||U.call(T,k=>{var A;(A=k==null?void 0:k.forEach)==null||A.call(k,Y=>{B.has(Y.id)||(B.add(Y.id),l.value.push(Y))})})}else l.value=h.value}catch(w){((De=w==null?void 0:w.response)==null?void 0:De.status)===404?m.value=a("debouncedFilter.errors.invalid"):(l.value=[],u.value=a("debouncedFilter.errors.fetch"))}finally{p.value=!1}else p.value=!0,m.value="",f?(l.value=(Be=y.value)==null?void 0:Be.filter(w=>{var T;let B=!1;for(const k of o.searchKeys){const A=typeof w[k]=="string"?(T=w[k])==null?void 0:T.toLowerCase():w[k];A!=null&&A.includes(f.toLowerCase())&&(B=!0)}return B}),(!l.value||!l.value.length)&&(m.value=a("debouncedFilter.errors.invalid"))):l.value=y.value,p.value=!1};return{loading:p,error:u,validationError:m,results:l,allRecords:y,loadItems:R,debouncedQueryChange:c}}function dt(e,t){const r=n.unref(t),o=n.computed(()=>e.apiBaseUrl.startsWith("/")?new URL(`${window.location.origin}${r}`):new URL(r));return o.value.search="",i=>`${o.value.href}/${i}`}function yt(){const{i18n:{t:e}}=z();return{getMessageFromError:t=>{var r,o,i,a;if(!t)return e("errors.unexpected");if(((r=t==null?void 0:t.response)==null?void 0:r.status)===401)return console.warn("getMessageFromError: User auth token is expired or missing, returning empty message."),"";if((o=t==null?void 0:t.response)!=null&&o.data){if(t.response.data.detail)return t.response.data.detail;if((i=t.response.data.details)!=null&&i.length)return t.response.data.details.map(s=>{let c=e("errors.unexpected");return s.messages&&typeof s.messages=="object"&&s.messages.length&&(c=s.messages.join(", ")),s.field?`${s.field} - ${c}`:c}).join("; ");if(t.response.data.message){const{message:s}=t.response.data;return Array.isArray(s)?(a=s[0])!=null&&a.constraints?Object.values(s[0].constraints)[0]:s[0]:s}if(typeof t.response.data=="string")return t.response.data;if(typeof t.response.data=="object")return Object.keys(t.response.data).map(s=>`${s} ${t.response.data[s]}`).join(", ")}return t.message||e("errors.unexpected")}}}function ft(e){const t=window.location.origin,r=t.endsWith("/")?t:`${t}/`;try{const o=e.join("/"),i=`${r}${o}`,a=e.some(s=>s.trim()==="");if(/^(https:\/\/(www\.)?([a-zA-Z0-9-]+\.){1,}[a-zA-Z]{2,}(:[0-9]+)?(\/[^\/]+)*)$|^(https|http):\/\/localhost(:[0-9]+)?(\/[^\/]+)*$/.test(i)&&!a&&new URL(i))return`${r}${o}`;throw new Error("Invalid url")}catch(o){return console.warn("Failed to build valid URL:",o),""}}function ge(e,t){const r=n.ref(n.unref(e)),o=n.ref(n.unref(t)),i=n.computed(()=>!!(r.value.app==="konnect"||r.value.isExactMatch)),a=n.computed(()=>o.value.startsWith("/")?new URL(`${window.location.origin}${o.value}`):new URL(o.value));return s=>{const{page:c,pageSize:p,offset:u,sortColumnKey:m,sortColumnOrder:l,query:h}=s;try{let y=new URL(a.value.href);return i.value&&h?(y.search="",y=r.value.isExactMatch?new URL(`${y.href}/${h}/`):new URL(`${y.href}?filter[name][contains]=${h}`)):(i.value||new URLSearchParams(h).forEach((S,g)=>{y.searchParams.append(g,S)}),m&&y.searchParams.append("sort_by",m),l==="desc"&&y.searchParams.append("sort_desc","1"),y.searchParams.append("size",String(p))),u&&c!==1&&y.searchParams.append("offset",String(u)),y.href}catch(y){return console.error("RouteList(fetcher)",y),o.value}}}function mt(e,t,r="data"){const o=n.unref(t),{axiosInstance:i}=H(e.axiosRequestConfig),a=ge(e,o),s=n.ref({status:N.Idle});return{fetcher:async c=>{var p;try{s.value={status:N.Loading};let u=a(c);u.includes("filter[name]")&&(u=`${u}&page[size]=${c.pageSize}&page[number]=${c.page}`);const m=await i.get(u);if(m.status>=400)throw m;const l=m.data,h=r&&r.replace(/[^\w-_]/gi,"");let y;l[h]&&Array.isArray(l[h])?y=l[h]:Array.isArray(l)?y=l:y=Object.keys(l).length?[l]:[];const S={data:y,total:y.length,...l.offset?{pagination:{offset:l.offset}}:null};return s.value={status:N.Idle,response:S},S}catch(u){const m={data:[],total:0};return c.query&&(((p=u.response)==null?void 0:p.status)===404||u.status===404)?(s.value={status:N.NoResults,response:m,error:u.response?u:{response:u}},m):(s.value={status:N.Error,response:m,error:u.response?u:{response:u}},m)}},fetcherState:s}}function ht(){const e=(r,o="_")=>r?r.split(o).map(i=>i.toLowerCase()==="id"?i.toUpperCase():i.charAt(0).toUpperCase()+i.substring(1)).join(" "):"",t=/(?:^|[\s-:'"])\w/g;return{capitalize:r=>r?r.replace(t,o=>o.toUpperCase()):"",convertKeyToTitle:e}}const _e=/^[v^~<>=]*?(\d+)(?:\.([x*]|\d+)(?:\.([x*]|\d+)(?:\.([x*]|\d+))?(?:-([\da-z\-]+(?:\.[\da-z\-]+)*))?(?:\+[\da-z\-]+(?:\.[\da-z\-]+)*)?)?)?$/i,be=e=>{if(typeof e!="string")throw new TypeError("Invalid argument expected string");const t=e.match(_e);if(!t)throw new Error(`Invalid argument not valid semver ('${e}' received)`);return t.shift(),t},ke=e=>e==="*"||e==="x"||e==="X",we=e=>{const t=parseInt(e,10);return isNaN(t)?e:t},gt=(e,t)=>typeof e!=typeof t?[String(e),String(t)]:[e,t],_t=(e,t)=>{if(ke(e)||ke(t))return 0;const[r,o]=gt(we(e),we(t));return r>o?1:r<o?-1:0},Se=(e,t)=>{for(let r=0;r<Math.max(e.length,t.length);r++){const o=_t(e[r]||"0",t[r]||"0");if(o!==0)return o}return 0},bt=(e,t)=>{const r=be(e),o=be(t),i=r.pop(),a=o.pop(),s=Se(r,o);return s!==0?s:i&&a?Se(i.split("."),a.split(".")):i||a?i?-1:1:0},Te=(e,t,r)=>{kt(r);const o=bt(e,t);return Ee[r].includes(o)},Ee={">":[1],">=":[0,1],"=":[0],"<=":[-1,0],"<":[-1],"!=":[-1,1]},Ce=Object.keys(Ee),kt=e=>{if(typeof e!="string")throw new TypeError(`Invalid operator type, expected string but got ${typeof e}`);if(Ce.indexOf(e)===-1)throw new Error(`Invalid operator, expected one of ${Ce.join("|")}`)},wt=e=>typeof e=="string"&&/^[v\d]/.test(e)&&_e.test(e);function St(e){const{gatewayInfo:t,supportedRange:r}=e;if(!t)return!0;const{edition:o,version:i}=t;if(!wt(i))return console.error("Invalid version"),!1;const a=r[o];if(!a)return!1;const[s,c]=a;return!(s&&Te(i,s,"<")||c&&Te(i,c,">"))}function Tt(e){const t=n.ref(0),r=n.ref(0),o=n.ref(!1);return n.watch(e,i=>{i&&!o.value&&(t.value=i.offsetWidth,r.value=i.scrollWidth,o.value=!0)}),{isTruncated:n.computed(()=>t.value<r.value)}}function Et(){const{i18n:{t:e}}=z();return{utf8Name:t=>/^[\p{N}\p{L}.\-_~]*$/u.test(t)?"":e("validationErrors.utf8Name")}}const Ie={useAxios:H,useDebouncedFilter:pt,useDeleteUrlBuilder:dt,useErrors:yt,useExternalLinkCreator:ft,useFetcher:mt,useFetchUrlBuilder:ge,useHelpers:he,useStringHelpers:ht,useI18n:z,useGatewayFeatureSupported:St,useTruncationDetector:Tt,useValidators:Et},Ct=(e,t)=>{const r=e.__vccOpts||e;for(const[o,i]of t)r[o]=i;return r},It="#0044f4",vt="16px";/*! js-yaml 4.1.0 https://github.com/nodeca/js-yaml @license MIT */function ve(e){return typeof e>"u"||e===null}function xt(e){return typeof e=="object"&&e!==null}function At(e){return Array.isArray(e)?e:ve(e)?[]:[e]}function Nt(e,t){var r,o,i,a;if(t)for(a=Object.keys(t),r=0,o=a.length;r<o;r+=1)i=a[r],e[i]=t[i];return e}function qt(e,t){var r="",o;for(o=0;o<t;o+=1)r+=e;return r}function Rt(e){return e===0&&Number.NEGATIVE_INFINITY===1/e}var Ot=ve,Lt=xt,Dt=At,Bt=qt,jt=Rt,Vt=Nt,K={isNothing:Ot,isObject:Lt,toArray:Dt,repeat:Bt,isNegativeZero:jt,extend:Vt};function xe(e,t){var r="",o=e.reason||"(unknown reason)";return e.mark?(e.mark.name&&(r+='in "'+e.mark.name+'" '),r+="("+(e.mark.line+1)+":"+(e.mark.column+1)+")",!t&&e.mark.snippet&&(r+=`
|
|
1
|
+
(function(d,n){typeof exports=="object"&&typeof module<"u"?n(exports,require("vue"),require("@kong-ui-public/analytics-chart"),require("swrv"),require("axios"),require("@kong-ui-public/i18n"),require("@kong-ui-public/analytics-metric-provider"),require("@kong-ui-public/analytics-utilities"),require("@kong/kongponents"),require("vue-router"),require("@kong-ui-public/analytics-config-store")):typeof define=="function"&&define.amd?define(["exports","vue","@kong-ui-public/analytics-chart","swrv","axios","@kong-ui-public/i18n","@kong-ui-public/analytics-metric-provider","@kong-ui-public/analytics-utilities","@kong/kongponents","vue-router","@kong-ui-public/analytics-config-store"],n):(d=typeof globalThis<"u"?globalThis:d||self,n(d["kong-ui-public-dashboard-renderer"]={},d.Vue,d["kong-ui-public-analytics-chart"],d.swrv,d.axios,d["kong-ui-public-i18n"],d["kong-ui-public-analytics-metric-provider"],d["kong-ui-public-analytics-utilities"],d.Kongponents,d.VueRouter,d["kong-ui-public-analytics-config-store"]))})(this,function(d,n,E,je,Z,j,W,Q,yn,fn,Ve){"use strict";const F="analytics-query-provider",P="{entity-id}",J="{cp-id}",X="{timeframe}";var b=(e=>(e.HorizontalBar="horizontal_bar",e.VerticalBar="vertical_bar",e.Gauge="gauge",e.TimeseriesLine="timeseries_line",e.GoldenSignals="golden_signals",e.TopN="top_n",e.Slottable="slottable",e))(b||{});const V={type:"string"},O={type:"string"},ee={type:"boolean"},te={type:["object","array"],items:{type:"string"},additionalProperties:{type:"string"}},re={type:"object",properties:{type:{type:"string",enum:["slottable"]},id:{type:"string"}},required:["type","id"],additionalProperties:!1},ne={type:"object",properties:{type:{type:"string",enum:["horizontal_bar","vertical_bar"]},stacked:{type:"boolean"},chartDatasetColors:te,syntheticsDataKey:V,chartTitle:O,allowCsvExport:ee},required:["type"],additionalProperties:!1},ie={type:"object",properties:{type:{type:"string",enum:["timeseries_line"]},stacked:{type:"boolean"},chartDatasetColors:te,syntheticsDataKey:V,chartTitle:O,allowCsvExport:ee},required:["type"],additionalProperties:!1},oe={type:"object",properties:{type:{type:"string",enum:["gauge"]},metricDisplay:{type:"string",enum:Object.values(E.ChartMetricDisplay)},reverseDataset:{type:"boolean"},numerator:{type:"number"},syntheticsDataKey:V,chartTitle:O},required:["type"],additionalProperties:!1},ae={type:"object",properties:{chartTitle:O,syntheticsDataKey:V,type:{type:"string",enum:["top_n"]},description:{type:"string"},entityLink:{type:"string"}},required:["type"],additionalProperties:!1},se={type:"object",properties:{chartTitle:O,type:{type:"string",enum:["golden_signals"]},longCardTitles:{type:"boolean"},description:{type:"string"},percentileLatency:{type:"boolean"}},required:["type"]},ce={type:"object",description:"A query to launch at the API",properties:{metrics:{type:"array",description:"List of aggregated metrics to collect across the requested time span.",items:{type:"string",enum:["request_count","request_per_minute","response_latency_p99","response_latency_p95","response_latency_p50","response_latency_average","upstream_latency_p99","upstream_latency_p95","upstream_latency_p50","upstream_latency_average","kong_latency_p99","kong_latency_p95","kong_latency_p50","kong_latency_average","response_size_p99","response_size_p95","response_size_p50","request_size_p99","request_size_p95","request_size_p50","request_size_average","response_size_average"]}},dimensions:{type:"array",description:"List of attributes or entity types to group by.",minItems:0,maxItems:2,items:{type:"string",enum:["api_product","api_product_version","application","consumer","control_plane","control_plane_group","data_plane_node","gateway_service","route","status_code","status_code_grouped","time"]}},filters:{type:"array",description:"A list of filters to apply to the query.",items:{type:"object",description:"A filter that specifies which data to include in the query",properties:{dimension:{type:"string",enum:["api_product","api_product_version","application","consumer","control_plane","control_plane_group","data_plane_node","gateway_service","route","status_code","status_code_grouped","time"]},type:{type:"string",enum:["in","not_in","selector"]},values:{type:"array",items:{type:"string"}}},required:["dimension","type","values"]}},granularity_ms:{type:"number",description:'Force time grouping into buckets of this duration in milliseconds. Only has an effect if "time" is in the "dimensions" list.',minimum:6e4},time_range:{description:"The time range to query.",oneOf:[{type:"object",properties:{tz:{type:"string",default:"Etc/UTC"},type:{type:"string",enum:["relative"]},time_range:{type:"string",enum:["15m","1h","6h","12h","24h","7d","30d","current_week","current_month","previous_week","previous_month"],default:"1h"}},required:["type","time_range"]},{type:"object",description:"A duration representing an exact start and end time.",properties:{tz:{type:"string",default:"Etc/UTC"},type:{type:"string",enum:["absolute"]},start:{type:"string"},end:{type:"string"}},required:["type"]}],default:{type:"relative",time_range:"1h"}},meta:{type:"object"}}},le={type:"object",properties:{query:ce,chart:{oneOf:[ne,oe,ie,se,ae,re]}},required:["query","chart"],additionalProperties:!1},ue={type:"object",properties:{position:{type:"object",properties:{col:{type:"number"},row:{type:"number"}},description:"Position of the tile in the grid.",required:["col","row"],additionalProperties:!1},size:{type:"object",properties:{cols:{type:"number"},rows:{type:"number"},fitToContent:{type:"boolean"}},description:"Number of columns and rows the tile occupies. If fitToContent is true for every tile in a row, and each tile only occupies 1 row, then the row will auto-fit to its content.",required:["cols","rows"],additionalProperties:!1}},required:["position","size"],additionalProperties:!1},pe={type:"object",properties:{definition:le,layout:ue},required:["definition","layout"],additionalProperties:!1},$e={type:"object",properties:{tiles:{type:"array",items:pe},tileHeight:{type:"number",description:"Height of each tile in pixels. Default: 170"},gridSize:{type:"object",properties:{cols:{type:"number"},rows:{type:"number"}},description:"Number of columns and rows in the grid.",required:["cols","rows"],additionalProperties:!1}},required:["tiles","gridSize"],additionalProperties:!1};var de=(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))(de||{});const ze=e=>{var t,r,o,i,a;return e?!!((t=Object.keys(e))!=null&&t.length||(r=e.data)!=null&&r.length||(i=(o=e.data)==null?void 0:o.data)!=null&&i.length||!((a=e.data)!=null&&a.data)&&typeof e.data=="object"&&Object.keys(e==null?void 0:e.data).length):!1};function Ue(e=n.ref({}),t,r,o=ze){const i=n.ref("PENDING");return n.watchEffect(()=>{const a=o(e.value);if(e.value&&a&&r.value){i.value="VALIDATING_HAS_DATA";return}if(e.value&&r.value){i.value="VALIDATING";return}if(e.value&&t.value){i.value="STALE_IF_ERROR";return}if(e.value===void 0&&!t.value){i.value="PENDING";return}if(e.value&&!t.value&&a){i.value="SUCCESS_HAS_DATA";return}if(e.value&&!t.value){i.value="SUCCESS";return}e.value===void 0&&t&&(i.value="ERROR")}),{state:i,swrvState:de}}const Fe={renderer:{noQueryBridge:"No query bridge provided. Unable to render dashboard.",trendRange:{"24h":"Last 24-Hour Summary","30d":"Last 30-Day Summary"}},queryDataProvider:{timeRangeExceeded:"The time range for this report is outside of your organization's data retention period"}};function Pe(){const e=j.createI18n("en-us",Fe);return{i18n:e,i18nT:j.i18nTComponent(e)}}const ye={useI18n:Pe},$=n.defineComponent({__name:"QueryDataProvider",props:{context:{},query:{},queryReady:{type:Boolean}},emits:["queryComplete"],setup(e,{emit:t}){const r=e,o=t,{i18n:i}=ye.useI18n(),a=n.inject(F),s=()=>r.queryReady&&a?JSON.stringify([r.query,r.context]):null,c=new AbortController;n.onUnmounted(()=>{c.abort()});const{data:p,error:u,isValidating:m}=je(s,async()=>{var C,R,x,L;try{const f=[];r.query.filters&&f.push(...r.query.filters),f.push(...r.context.filters);const U={...r.query,time_range:{...r.context.timeSpec,tz:r.context.tz},filters:f};return a==null?void 0:a.queryFn(U,c)}catch(f){y.value=((R=(C=f==null?void 0:f.response)==null?void 0:C.data)==null?void 0:R.message)==="Range not allowed for this tier"?i.t("queryDataProvider.timeRangeExceeded"):((L=(x=f==null?void 0:f.response)==null?void 0:x.data)==null?void 0:L.message)||(f==null?void 0:f.message)}finally{o("queryComplete")}},{refreshInterval:r.context.refreshInterval,revalidateOnFocus:!1}),{state:l,swrvState:h}=Ue(p,u,m),y=n.ref(null),S=n.computed(()=>l.value===h.ERROR||!!y.value),g=n.computed(()=>!r.queryReady||l.value===h.PENDING);return(C,R)=>{const x=n.resolveComponent("KSkeleton"),L=n.resolveComponent("KEmptyState");return g.value||!n.unref(p)&&!S.value?(n.openBlock(),n.createBlock(x,{key:0,class:"chart-skeleton",type:"table"})):S.value?(n.openBlock(),n.createBlock(L,{key:1,"action-button-visible":!1,"data-testid":"chart-empty-state","icon-variant":"error"},{default:n.withCtx(()=>[n.createTextVNode(n.toDisplayString(y.value),1)]),_:1})):n.unref(p)?n.renderSlot(C.$slots,"default",{key:2,data:n.unref(p)}):n.createCommentVNode("",!0)}}}),He={class:"analytics-chart"},Ke=n.defineComponent({__name:"SimpleChartRenderer",props:{query:{},context:{},queryReady:{type:Boolean},chartOptions:{},height:{}},setup(e){n.useCssVars(i=>({"8c62ff26":`${i.height}px`}));const t=e,r={[b.Gauge]:E.ChartTypesSimple.GAUGE},o=n.computed(()=>({...t.chartOptions,type:r[t.chartOptions.type]}));return(i,a)=>(n.openBlock(),n.createBlock($,{context:i.context,query:i.query,"query-ready":i.queryReady},{default:n.withCtx(({data:s})=>[n.createElementVNode("div",He,[n.createVNode(n.unref(E.SimpleChart),{"chart-data":s,"chart-options":o.value,"synthetics-data-key":i.chartOptions.syntheticsDataKey},null,8,["chart-data","chart-options","synthetics-data-key"])])]),_:1},8,["context","query","query-ready"]))}}),I=(e,t)=>{const r=e.__vccOpts||e;for(const[o,i]of t)r[o]=i;return r},Me=I(Ke,[["__scopeId","data-v-f0f6ed41"]]),Ge={class:"analytics-chart"},fe=I(n.defineComponent({__name:"BarChartRenderer",props:{query:{},context:{},queryReady:{type:Boolean},chartOptions:{},height:{}},setup(e){n.useCssVars(i=>({"1eed717c":`${i.height}px`}));const t=e,r={[b.HorizontalBar]:E.ChartTypes.HORIZONTAL_BAR,[b.VerticalBar]:E.ChartTypes.VERTICAL_BAR},o=n.computed(()=>({type:r[t.chartOptions.type],stacked:t.chartOptions.stacked,chartDatasetColors:t.chartOptions.chartDatasetColors}));return(i,a)=>(n.openBlock(),n.createBlock($,{context:i.context,query:i.query,"query-ready":i.queryReady},{default:n.withCtx(({data:s})=>[n.createElementVNode("div",Ge,[n.createVNode(n.unref(E.AnalyticsChart),{"allow-csv-export":i.chartOptions.allowCsvExport,"chart-data":s,"chart-options":o.value,"chart-title":i.chartOptions.chartTitle,"legend-position":"bottom","show-annotations":!1,"synthetics-data-key":i.chartOptions.syntheticsDataKey,"tooltip-title":""},null,8,["allow-csv-export","chart-data","chart-options","chart-title","synthetics-data-key"])])]),_:1},8,["context","query","query-ready"]))}}),[["__scopeId","data-v-36598a1b"]]),Ye={class:"analytics-chart"},Ze=I(n.defineComponent({__name:"TimeseriesChartRenderer",props:{query:{},context:{},queryReady:{type:Boolean},chartOptions:{},height:{}},setup(e){n.useCssVars(i=>({"4efa9c90":`${i.height}px`}));const t=e,r={[b.TimeseriesLine]:E.ChartTypes.TIMESERIES_LINE},o=n.computed(()=>{const i=t.chartOptions.stacked??!1;return{type:r[t.chartOptions.type],stacked:i,chartDatasetColors:t.chartOptions.chartDatasetColors}});return(i,a)=>(n.openBlock(),n.createBlock($,{context:i.context,query:i.query,"query-ready":i.queryReady},{default:n.withCtx(({data:s})=>[n.createElementVNode("div",Ye,[n.createVNode(n.unref(E.AnalyticsChart),{"allow-csv-export":i.chartOptions.allowCsvExport,"chart-data":s,"chart-options":o.value,"chart-title":i.chartOptions.chartTitle,"legend-position":"bottom","synthetics-data-key":i.chartOptions.syntheticsDataKey,"tooltip-title":""},null,8,["allow-csv-export","chart-data","chart-options","chart-title","synthetics-data-key"])])]),_:1},8,["context","query","query-ready"]))}}),[["__scopeId","data-v-ceb07ca8"]]),We={class:"metric-card-tile-wrapper"},Qe=I(n.defineComponent({__name:"GoldenSignalsRenderer",props:{query:{},context:{},queryReady:{type:Boolean},chartOptions:{},height:{}},setup(e){const t=e,r=n.computed(()=>{const i=t.context.timeSpec;if(i.type==="absolute")return new Q.Timeframe({key:"custom",timeframeText:"custom",display:"custom",startCustom:i.start,endCustom:i.end,timeframeLength:()=>0,defaultResponseGranularity:"daily",dataGranularity:"daily",isRelative:!1,allowedTiers:["free","plus","enterprise"]});const a=Q.TimePeriods.get(i.time_range);if(!a)throw new Error("Unknown time range");return a}),o=n.computed(()=>({overrideTimeframe:r.value,tz:t.context.tz,additionalFilter:t.context.filters,longCardTitles:t.chartOptions.longCardTitles,containerTitle:t.chartOptions.chartTitle,description:t.chartOptions.description,percentileLatency:t.chartOptions.percentileLatency,refreshInterval:t.context.refreshInterval,queryReady:t.queryReady}));return(i,a)=>(n.openBlock(),n.createElementBlock("div",We,[n.createVNode(n.unref(W.MetricsProvider),n.normalizeProps(n.guardReactiveProps(o.value)),{default:n.withCtx(()=>[n.createVNode(n.unref(W.MetricsConsumer))]),_:1},16)]))}}),[["__scopeId","data-v-a637d856"]]),me="20px";var N=(e=>(e[e.Loading=0]="Loading",e[e.Idle=1]="Idle",e[e.NoResults=2]="NoResults",e[e.Error=3]="Error",e))(N||{});function Je(){return{getAxiosInstance:(e={})=>{try{const t=n.inject("get-axios-instance",void 0);return typeof t=="function"?t(e):Z.create({withCredentials:!0,timeout:3e4,...e})}catch(t){return console.warn("getAxiosInstance:",t.message||t),Z.create({withCredentials:!0,timeout:3e4,...e})}},getTraceIdFromError:e=>{var t;return((t=e==null?void 0:e.response)==null?void 0:t.headers["x-datadog-trace-id"])||""}}}function Xe(){return{debounce:(e,t)=>{let r;return(...o)=>{clearTimeout(r),r=window==null?void 0:window.setTimeout(()=>{e(...o)},t)}}}}function H(e={}){const{getAxiosInstance:t}=Je();return{axiosInstance:t(e)}}const et={actions:{copyId:"Copy ID",copied_id:'Copied "{id}" to the clipboard',copyToClipboard:"Copied successfully!",copyToClipboardFailed:"Failed to copy to the clipboard"}},tt={message:"Are you sure you want to delete this {entityType}?",messageWithName:"Are you sure you want to delete this {entityType} {entityName}?"},rt={actions:{viewConfiguration:"View Configuration",save:"Save",cancel:"Cancel",back:"Back"},configuration:{title:"Configuration",message:"Export configurations for core Kong Gateway objects, like services, routes, and plugins, to either YAML or JSON. This allows for straightforward importing into APIOps tools like decK with YAML, or Insomnia and cURL with JSON.",yaml:"YAML",json:"JSON"},errors:{edit:"The entity could not be edited at this time."}},nt={emptyState:{noSearchResultsTitle:"No results found",noSearchResultsMessage:"Please adjust the criteria and try again.",noSearchResultsCtaText:"Clear"}},it={title:"Configuration",actions:{copy:"Copy JSON"},sections:{advanced:"Advanced",plugin:"Plugin Specific Configuration"},commonFields:{id_label:"ID",name_label:"Name",enabled_label:"Enabled",enabled_tooltip:"Enabled is FTW",updated_at_label:"Last Updated",created_at_label:"Created",tags_label:"Tags",link:"Link"},statusBadge:{enabledLabel:"Enabled",disabledLabel:"Disabled"},copy:{tooltip:"Copy {label}",success:"Copied!"},errors:{load:"The entity configuration data could not be loaded at this time.",copy:"Failed to copy to clipboard"},general:{entryTitle:"Entry {index}",structuredFormat:"Structured"}},ot={filterButtonText:"Filter",fieldLabel:"Filter by:",inputPlaceholder:"Enter a value",selectPlaceholder:"Select an item",applyButtonText:"Apply",clearButtonText:"Clear",clearAllButtonText:"Clear all filters"},at={errors:{fetch:"Could not fetch available items",invalid:"Please select a valid value"}},st={unexpected:"An unexpected error has occurred",dataKeyUndefined:'The data key "{dataKey}" does not exist in the response.'},ct={utf8Name:"The name can be any string containing characters, letters, numbers, or the following characters: ., -, _, or ~. Do not use spaces."},lt={enable:{title:"Enable {entityType}",message:"Are you sure you want to enable the {entityType} {entityName}?",confirmText:"Yes, enable"},disable:{title:"Disable {entityType}",message:"Are you sure you want to disable the {entityType} {entityName}?",confirmText:"Yes, disable"}},ut={global:et,deleteModal:tt,baseForm:rt,baseTable:nt,baseConfigCard:it,filter:ot,debouncedFilter:at,errors:st,validationErrors:ct,toggleModal:lt};function z(){const e=j.createI18n("en-us",ut);return{i18n:e,i18nT:j.i18nTComponent(e)}}function he(){const e=(r,o)=>(o==null?void 0:o[r])??void 0,t=(r,o)=>{if(r.length!==o.length)return!1;const i=new Set([...r,...o]);for(const a of i){const s=r.filter(p=>p===a).length,c=o.filter(p=>p===a).length;if(s!==c)return!1}return!0};return{getPropValue:e,objectsAreEqual:(r,o,i)=>{if(i){if(Object.keys(r).length===Object.keys(o).length)for(const a in r)if(Array.isArray(r[a])&&Array.isArray(o[a])){if(t(r[a],o[a]))continue;return!1}else{if(r[a]===o[a])continue;return!1}else return!1;return!0}try{return JSON.stringify(r)===JSON.stringify(o)}catch{return!1}},sortAlpha:r=>(o,i)=>{let a=o[r]===void 0||o[r]===null?"":o[r],s=i[r]===void 0||i[r]===null?"":i[r];return Array.isArray(o[r])&&(a=o[r][0]),Array.isArray(i[r])&&(s=i[r][0]),a.localeCompare(s)},isValidUuid:r=>r?/[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}/.test(r):!1}}function pt(e,t,r,o={fetchedItemsKey:"data",searchKeys:["id"]}){r||(r="1000");const{axiosInstance:i}=H(e.axiosRequestConfig),{i18n:{t:a}}=z(),{debounce:s}=Xe(),c=s(async f=>{await L(f)},200),p=n.ref(!1),u=n.ref(""),m=n.ref(""),l=n.ref([]),h=n.ref([]),y=n.ref(void 0),S=n.unref(t);let g=`${e.apiBaseUrl}${S}`;e.app==="konnect"?g=g.replace(/{controlPlaneId}/gi,(e==null?void 0:e.controlPlaneId)||""):e.app==="kongManager"&&(g=g.replace(/\/{workspace}/gi,e!=null&&e.workspace?`/${e.workspace}`:""));const{isValidUuid:C}=he(),R=async()=>{try{p.value=!0;const{data:f}=await i.get(`${g}?size=${r}`);f!=null&&f.next||(y.value=o.fetchedItemsKey in f?f[o.fetchedItemsKey]:[]),h.value=o.fetchedItemsKey in f?f[o.fetchedItemsKey]:[],l.value=h.value}catch{l.value=[],u.value=a("debouncedFilter.errors.fetch")}finally{p.value=!1}},x=n.ref(""),L=async f=>{var U,De,Be;if(x.value!==f)if(x.value=f||"",y.value===void 0)try{if(p.value=!0,u.value="",m.value="",e.app==="konnect"){let w=g+"";f&&(w+=`/${f}`);const{data:T}=await i.get(`${w}?size=${r}`);o.fetchedItemsKey in T?l.value=T[o.fetchedItemsKey]:T!=null&&T.id?l.value=[T]:l.value=[]}else if(f){const w=[];C(f)&&o.searchKeys.includes("id")?w.push((async()=>{const{data:k}=await i.get(`${g}/${f}`);return[k[o.fetchedItemsKey]??k]})()):w.push(...o.searchKeys.filter(k=>k!=="id").map(async k=>{const{data:A}=await i.get(`${g}?${k}=${f}`);return A[o.fetchedItemsKey]}));const T=await Promise.all(w),B=new Set;l.value=[],(U=T==null?void 0:T.forEach)==null||U.call(T,k=>{var A;(A=k==null?void 0:k.forEach)==null||A.call(k,Y=>{B.has(Y.id)||(B.add(Y.id),l.value.push(Y))})})}else l.value=h.value}catch(w){((De=w==null?void 0:w.response)==null?void 0:De.status)===404?m.value=a("debouncedFilter.errors.invalid"):(l.value=[],u.value=a("debouncedFilter.errors.fetch"))}finally{p.value=!1}else p.value=!0,m.value="",f?(l.value=(Be=y.value)==null?void 0:Be.filter(w=>{var T;let B=!1;for(const k of o.searchKeys){const A=typeof w[k]=="string"?(T=w[k])==null?void 0:T.toLowerCase():w[k];A!=null&&A.includes(f.toLowerCase())&&(B=!0)}return B}),(!l.value||!l.value.length)&&(m.value=a("debouncedFilter.errors.invalid"))):l.value=y.value,p.value=!1};return{loading:p,error:u,validationError:m,results:l,allRecords:y,loadItems:R,debouncedQueryChange:c}}function dt(e,t){const r=n.unref(t),o=n.computed(()=>e.apiBaseUrl.startsWith("/")?new URL(`${window.location.origin}${r}`):new URL(r));return o.value.search="",i=>`${o.value.href}/${i}`}function yt(){const{i18n:{t:e}}=z();return{getMessageFromError:t=>{var r,o,i,a;if(!t)return e("errors.unexpected");if(((r=t==null?void 0:t.response)==null?void 0:r.status)===401)return console.warn("getMessageFromError: User auth token is expired or missing, returning empty message."),"";if((o=t==null?void 0:t.response)!=null&&o.data){if(t.response.data.detail)return t.response.data.detail;if((i=t.response.data.details)!=null&&i.length)return t.response.data.details.map(s=>{let c=e("errors.unexpected");return s.messages&&typeof s.messages=="object"&&s.messages.length&&(c=s.messages.join(", ")),s.field?`${s.field} - ${c}`:c}).join("; ");if(t.response.data.message){const{message:s}=t.response.data;return Array.isArray(s)?(a=s[0])!=null&&a.constraints?Object.values(s[0].constraints)[0]:s[0]:s}if(typeof t.response.data=="string")return t.response.data;if(typeof t.response.data=="object")return Object.keys(t.response.data).map(s=>`${s} ${t.response.data[s]}`).join(", ")}return t.message||e("errors.unexpected")}}}function ft(e){const t=window.location.origin,r=t.endsWith("/")?t:`${t}/`;try{const o=e.join("/"),i=`${r}${o}`,a=e.some(s=>s.trim()==="");if(/^(https:\/\/(www\.)?([a-zA-Z0-9-]+\.){1,}[a-zA-Z]{2,}(:[0-9]+)?(\/[^\/]+)*)$|^(https|http):\/\/localhost(:[0-9]+)?(\/[^\/]+)*$/.test(i)&&!a&&new URL(i))return`${r}${o}`;throw new Error("Invalid url")}catch(o){return console.warn("Failed to build valid URL:",o),""}}function ge(e,t){const r=n.ref(n.unref(e)),o=n.ref(n.unref(t)),i=n.computed(()=>!!(r.value.app==="konnect"||r.value.isExactMatch)),a=n.computed(()=>o.value.startsWith("/")?new URL(`${window.location.origin}${o.value}`):new URL(o.value));return s=>{const{page:c,pageSize:p,offset:u,sortColumnKey:m,sortColumnOrder:l,query:h}=s;try{let y=new URL(a.value.href);return i.value&&h?(y.search="",y=r.value.isExactMatch?new URL(`${y.href}/${h}/`):new URL(`${y.href}?filter[name][contains]=${h}`)):(i.value||new URLSearchParams(h).forEach((S,g)=>{y.searchParams.append(g,S)}),m&&y.searchParams.append("sort_by",m),l==="desc"&&y.searchParams.append("sort_desc","1"),y.searchParams.append("size",String(p))),u&&c!==1&&y.searchParams.append("offset",String(u)),y.href}catch(y){return console.error("RouteList(fetcher)",y),o.value}}}function mt(e,t,r="data"){const o=n.unref(t),{axiosInstance:i}=H(e.axiosRequestConfig),a=ge(e,o),s=n.ref({status:N.Idle});return{fetcher:async c=>{var p;try{s.value={status:N.Loading};let u=a(c);u.includes("filter[name]")&&(u=`${u}&page[size]=${c.pageSize}&page[number]=${c.page}`);const m=await i.get(u);if(m.status>=400)throw m;const l=m.data,h=r&&r.replace(/[^\w-_]/gi,"");let y;l[h]&&Array.isArray(l[h])?y=l[h]:Array.isArray(l)?y=l:y=Object.keys(l).length?[l]:[];const S={data:y,total:y.length,...l.offset?{pagination:{offset:l.offset}}:null};return s.value={status:N.Idle,response:S},S}catch(u){const m={data:[],total:0};return c.query&&(((p=u.response)==null?void 0:p.status)===404||u.status===404)?(s.value={status:N.NoResults,response:m,error:u.response?u:{response:u}},m):(s.value={status:N.Error,response:m,error:u.response?u:{response:u}},m)}},fetcherState:s}}function ht(){const e=(r,o="_")=>r?r.split(o).map(i=>i.toLowerCase()==="id"?i.toUpperCase():i.charAt(0).toUpperCase()+i.substring(1)).join(" "):"",t=/(?:^|[\s-:'"])\w/g;return{capitalize:r=>r?r.replace(t,o=>o.toUpperCase()):"",convertKeyToTitle:e}}const _e=/^[v^~<>=]*?(\d+)(?:\.([x*]|\d+)(?:\.([x*]|\d+)(?:\.([x*]|\d+))?(?:-([\da-z\-]+(?:\.[\da-z\-]+)*))?(?:\+[\da-z\-]+(?:\.[\da-z\-]+)*)?)?)?$/i,be=e=>{if(typeof e!="string")throw new TypeError("Invalid argument expected string");const t=e.match(_e);if(!t)throw new Error(`Invalid argument not valid semver ('${e}' received)`);return t.shift(),t},ke=e=>e==="*"||e==="x"||e==="X",we=e=>{const t=parseInt(e,10);return isNaN(t)?e:t},gt=(e,t)=>typeof e!=typeof t?[String(e),String(t)]:[e,t],_t=(e,t)=>{if(ke(e)||ke(t))return 0;const[r,o]=gt(we(e),we(t));return r>o?1:r<o?-1:0},Se=(e,t)=>{for(let r=0;r<Math.max(e.length,t.length);r++){const o=_t(e[r]||"0",t[r]||"0");if(o!==0)return o}return 0},bt=(e,t)=>{const r=be(e),o=be(t),i=r.pop(),a=o.pop(),s=Se(r,o);return s!==0?s:i&&a?Se(i.split("."),a.split(".")):i||a?i?-1:1:0},Te=(e,t,r)=>{kt(r);const o=bt(e,t);return Ee[r].includes(o)},Ee={">":[1],">=":[0,1],"=":[0],"<=":[-1,0],"<":[-1],"!=":[-1,1]},Ce=Object.keys(Ee),kt=e=>{if(typeof e!="string")throw new TypeError(`Invalid operator type, expected string but got ${typeof e}`);if(Ce.indexOf(e)===-1)throw new Error(`Invalid operator, expected one of ${Ce.join("|")}`)},wt=e=>typeof e=="string"&&/^[v\d]/.test(e)&&_e.test(e);function St(e){const{gatewayInfo:t,supportedRange:r}=e;if(!t)return!0;const{edition:o,version:i}=t;if(!wt(i))return console.error("Invalid version"),!1;const a=r[o];if(!a)return!1;const[s,c]=a;return!(s&&Te(i,s,"<")||c&&Te(i,c,">"))}function Tt(e){const t=n.ref(0),r=n.ref(0),o=n.ref(!1);return n.watch(e,i=>{i&&!o.value&&(t.value=i.offsetWidth,r.value=i.scrollWidth,o.value=!0)}),{isTruncated:n.computed(()=>t.value<r.value)}}function Et(){const{i18n:{t:e}}=z();return{utf8Name:t=>/^[\p{N}\p{L}.\-_~]*$/u.test(t)?"":e("validationErrors.utf8Name")}}const Ie={useAxios:H,useDebouncedFilter:pt,useDeleteUrlBuilder:dt,useErrors:yt,useExternalLinkCreator:ft,useFetcher:mt,useFetchUrlBuilder:ge,useHelpers:he,useStringHelpers:ht,useI18n:z,useGatewayFeatureSupported:St,useTruncationDetector:Tt,useValidators:Et},Ct=(e,t)=>{const r=e.__vccOpts||e;for(const[o,i]of t)r[o]=i;return r},It="#0044f4",vt="16px";/*! js-yaml 4.1.0 https://github.com/nodeca/js-yaml @license MIT */function ve(e){return typeof e>"u"||e===null}function xt(e){return typeof e=="object"&&e!==null}function At(e){return Array.isArray(e)?e:ve(e)?[]:[e]}function Nt(e,t){var r,o,i,a;if(t)for(a=Object.keys(t),r=0,o=a.length;r<o;r+=1)i=a[r],e[i]=t[i];return e}function qt(e,t){var r="",o;for(o=0;o<t;o+=1)r+=e;return r}function Rt(e){return e===0&&Number.NEGATIVE_INFINITY===1/e}var Lt=ve,Ot=xt,Dt=At,Bt=qt,jt=Rt,Vt=Nt,K={isNothing:Lt,isObject:Ot,toArray:Dt,repeat:Bt,isNegativeZero:jt,extend:Vt};function xe(e,t){var r="",o=e.reason||"(unknown reason)";return e.mark?(e.mark.name&&(r+='in "'+e.mark.name+'" '),r+="("+(e.mark.line+1)+":"+(e.mark.column+1)+")",!t&&e.mark.snippet&&(r+=`
|
|
2
2
|
|
|
3
3
|
`+e.mark.snippet),o+" "+r):o}function D(e,t){Error.call(this),this.name="YAMLException",this.reason=e,this.mark=t,this.message=xe(this,!1),Error.captureStackTrace?Error.captureStackTrace(this,this.constructor):this.stack=new Error().stack||""}D.prototype=Object.create(Error.prototype),D.prototype.constructor=D,D.prototype.toString=function(e){return this.name+": "+xe(this,e)};var v=D,$t=["kind","multi","resolve","construct","instanceOf","predicate","represent","representName","defaultStyle","styleAliases"],zt=["scalar","sequence","mapping"];function Ut(e){var t={};return e!==null&&Object.keys(e).forEach(function(r){e[r].forEach(function(o){t[String(o)]=r})}),t}function Ft(e,t){if(t=t||{},Object.keys(t).forEach(function(r){if($t.indexOf(r)===-1)throw new v('Unknown option "'+r+'" is met in definition of "'+e+'" YAML type.')}),this.options=t,this.tag=e,this.kind=t.kind||null,this.resolve=t.resolve||function(){return!0},this.construct=t.construct||function(r){return r},this.instanceOf=t.instanceOf||null,this.predicate=t.predicate||null,this.represent=t.represent||null,this.representName=t.representName||null,this.defaultStyle=t.defaultStyle||null,this.multi=t.multi||!1,this.styleAliases=Ut(t.styleAliases||null),zt.indexOf(this.kind)===-1)throw new v('Unknown kind "'+this.kind+'" is specified for "'+e+'" YAML type.')}var _=Ft;function Ae(e,t){var r=[];return e[t].forEach(function(o){var i=r.length;r.forEach(function(a,s){a.tag===o.tag&&a.kind===o.kind&&a.multi===o.multi&&(i=s)}),r[i]=o}),r}function Pt(){var e={scalar:{},sequence:{},mapping:{},fallback:{},multi:{scalar:[],sequence:[],mapping:[],fallback:[]}},t,r;function o(i){i.multi?(e.multi[i.kind].push(i),e.multi.fallback.push(i)):e[i.kind][i.tag]=e.fallback[i.tag]=i}for(t=0,r=arguments.length;t<r;t+=1)arguments[t].forEach(o);return e}function M(e){return this.extend(e)}M.prototype.extend=function(e){var t=[],r=[];if(e instanceof _)r.push(e);else if(Array.isArray(e))r=r.concat(e);else if(e&&(Array.isArray(e.implicit)||Array.isArray(e.explicit)))e.implicit&&(t=t.concat(e.implicit)),e.explicit&&(r=r.concat(e.explicit));else throw new v("Schema.extend argument should be a Type, [ Type ], or a schema definition ({ implicit: [...], explicit: [...] })");t.forEach(function(i){if(!(i instanceof _))throw new v("Specified list of YAML types (or a single Type object) contains a non-Type object.");if(i.loadKind&&i.loadKind!=="scalar")throw new v("There is a non-scalar type in the implicit list of a schema. Implicit resolving of such types is not supported.");if(i.multi)throw new v("There is a multi type in the implicit list of a schema. Multi tags can only be listed as explicit.")}),r.forEach(function(i){if(!(i instanceof _))throw new v("Specified list of YAML types (or a single Type object) contains a non-Type object.")});var o=Object.create(M.prototype);return o.implicit=(this.implicit||[]).concat(t),o.explicit=(this.explicit||[]).concat(r),o.compiledImplicit=Ae(o,"implicit"),o.compiledExplicit=Ae(o,"explicit"),o.compiledTypeMap=Pt(o.compiledImplicit,o.compiledExplicit),o};var Ht=M,Kt=new _("tag:yaml.org,2002:str",{kind:"scalar",construct:function(e){return e!==null?e:""}}),Mt=new _("tag:yaml.org,2002:seq",{kind:"sequence",construct:function(e){return e!==null?e:[]}}),Gt=new _("tag:yaml.org,2002:map",{kind:"mapping",construct:function(e){return e!==null?e:{}}}),Yt=new Ht({explicit:[Kt,Mt,Gt]});function Zt(e){if(e===null)return!0;var t=e.length;return t===1&&e==="~"||t===4&&(e==="null"||e==="Null"||e==="NULL")}function Wt(){return null}function Qt(e){return e===null}var Jt=new _("tag:yaml.org,2002:null",{kind:"scalar",resolve:Zt,construct:Wt,predicate:Qt,represent:{canonical:function(){return"~"},lowercase:function(){return"null"},uppercase:function(){return"NULL"},camelcase:function(){return"Null"},empty:function(){return""}},defaultStyle:"lowercase"});function Xt(e){if(e===null)return!1;var t=e.length;return t===4&&(e==="true"||e==="True"||e==="TRUE")||t===5&&(e==="false"||e==="False"||e==="FALSE")}function er(e){return e==="true"||e==="True"||e==="TRUE"}function tr(e){return Object.prototype.toString.call(e)==="[object Boolean]"}var rr=new _("tag:yaml.org,2002:bool",{kind:"scalar",resolve:Xt,construct:er,predicate:tr,represent:{lowercase:function(e){return e?"true":"false"},uppercase:function(e){return e?"TRUE":"FALSE"},camelcase:function(e){return e?"True":"False"}},defaultStyle:"lowercase"});function nr(e){return 48<=e&&e<=57||65<=e&&e<=70||97<=e&&e<=102}function ir(e){return 48<=e&&e<=55}function or(e){return 48<=e&&e<=57}function ar(e){if(e===null)return!1;var t=e.length,r=0,o=!1,i;if(!t)return!1;if(i=e[r],(i==="-"||i==="+")&&(i=e[++r]),i==="0"){if(r+1===t)return!0;if(i=e[++r],i==="b"){for(r++;r<t;r++)if(i=e[r],i!=="_"){if(i!=="0"&&i!=="1")return!1;o=!0}return o&&i!=="_"}if(i==="x"){for(r++;r<t;r++)if(i=e[r],i!=="_"){if(!nr(e.charCodeAt(r)))return!1;o=!0}return o&&i!=="_"}if(i==="o"){for(r++;r<t;r++)if(i=e[r],i!=="_"){if(!ir(e.charCodeAt(r)))return!1;o=!0}return o&&i!=="_"}}if(i==="_")return!1;for(;r<t;r++)if(i=e[r],i!=="_"){if(!or(e.charCodeAt(r)))return!1;o=!0}return!(!o||i==="_")}function sr(e){var t=e,r=1,o;if(t.indexOf("_")!==-1&&(t=t.replace(/_/g,"")),o=t[0],(o==="-"||o==="+")&&(o==="-"&&(r=-1),t=t.slice(1),o=t[0]),t==="0")return 0;if(o==="0"){if(t[1]==="b")return r*parseInt(t.slice(2),2);if(t[1]==="x")return r*parseInt(t.slice(2),16);if(t[1]==="o")return r*parseInt(t.slice(2),8)}return r*parseInt(t,10)}function cr(e){return Object.prototype.toString.call(e)==="[object Number]"&&e%1===0&&!K.isNegativeZero(e)}var lr=new _("tag:yaml.org,2002:int",{kind:"scalar",resolve:ar,construct:sr,predicate:cr,represent:{binary:function(e){return e>=0?"0b"+e.toString(2):"-0b"+e.toString(2).slice(1)},octal:function(e){return e>=0?"0o"+e.toString(8):"-0o"+e.toString(8).slice(1)},decimal:function(e){return e.toString(10)},hexadecimal:function(e){return e>=0?"0x"+e.toString(16).toUpperCase():"-0x"+e.toString(16).toUpperCase().slice(1)}},defaultStyle:"decimal",styleAliases:{binary:[2,"bin"],octal:[8,"oct"],decimal:[10,"dec"],hexadecimal:[16,"hex"]}}),ur=new RegExp("^(?:[-+]?(?:[0-9][0-9_]*)(?:\\.[0-9_]*)?(?:[eE][-+]?[0-9]+)?|\\.[0-9_]+(?:[eE][-+]?[0-9]+)?|[-+]?\\.(?:inf|Inf|INF)|\\.(?:nan|NaN|NAN))$");function pr(e){return!(e===null||!ur.test(e)||e[e.length-1]==="_")}function dr(e){var t,r;return t=e.replace(/_/g,"").toLowerCase(),r=t[0]==="-"?-1:1,"+-".indexOf(t[0])>=0&&(t=t.slice(1)),t===".inf"?r===1?Number.POSITIVE_INFINITY:Number.NEGATIVE_INFINITY:t===".nan"?NaN:r*parseFloat(t,10)}var yr=/^[-+]?[0-9]+e/;function fr(e,t){var r;if(isNaN(e))switch(t){case"lowercase":return".nan";case"uppercase":return".NAN";case"camelcase":return".NaN"}else if(Number.POSITIVE_INFINITY===e)switch(t){case"lowercase":return".inf";case"uppercase":return".INF";case"camelcase":return".Inf"}else if(Number.NEGATIVE_INFINITY===e)switch(t){case"lowercase":return"-.inf";case"uppercase":return"-.INF";case"camelcase":return"-.Inf"}else if(K.isNegativeZero(e))return"-0.0";return r=e.toString(10),yr.test(r)?r.replace("e",".e"):r}function mr(e){return Object.prototype.toString.call(e)==="[object Number]"&&(e%1!==0||K.isNegativeZero(e))}var hr=new _("tag:yaml.org,2002:float",{kind:"scalar",resolve:pr,construct:dr,predicate:mr,represent:fr,defaultStyle:"lowercase"}),gr=Yt.extend({implicit:[Jt,rr,lr,hr]}),_r=gr,Ne=new RegExp("^([0-9][0-9][0-9][0-9])-([0-9][0-9])-([0-9][0-9])$"),qe=new RegExp("^([0-9][0-9][0-9][0-9])-([0-9][0-9]?)-([0-9][0-9]?)(?:[Tt]|[ \\t]+)([0-9][0-9]?):([0-9][0-9]):([0-9][0-9])(?:\\.([0-9]*))?(?:[ \\t]*(Z|([-+])([0-9][0-9]?)(?::([0-9][0-9]))?))?$");function br(e){return e===null?!1:Ne.exec(e)!==null||qe.exec(e)!==null}function kr(e){var t,r,o,i,a,s,c,p=0,u=null,m,l,h;if(t=Ne.exec(e),t===null&&(t=qe.exec(e)),t===null)throw new Error("Date resolve error");if(r=+t[1],o=+t[2]-1,i=+t[3],!t[4])return new Date(Date.UTC(r,o,i));if(a=+t[4],s=+t[5],c=+t[6],t[7]){for(p=t[7].slice(0,3);p.length<3;)p+="0";p=+p}return t[9]&&(m=+t[10],l=+(t[11]||0),u=(m*60+l)*6e4,t[9]==="-"&&(u=-u)),h=new Date(Date.UTC(r,o,i,a,s,c,p)),u&&h.setTime(h.getTime()-u),h}function wr(e){return e.toISOString()}var Sr=new _("tag:yaml.org,2002:timestamp",{kind:"scalar",resolve:br,construct:kr,instanceOf:Date,represent:wr});function Tr(e){return e==="<<"||e===null}var Er=new _("tag:yaml.org,2002:merge",{kind:"scalar",resolve:Tr}),G=`ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=
|
|
4
|
-
\r`;function Cr(e){if(e===null)return!1;var t,r,o=0,i=e.length,a=G;for(r=0;r<i;r++)if(t=a.indexOf(e.charAt(r)),!(t>64)){if(t<0)return!1;o+=6}return o%8===0}function Ir(e){var t,r,o=e.replace(/[\r\n=]/g,""),i=o.length,a=G,s=0,c=[];for(t=0;t<i;t++)t%4===0&&t&&(c.push(s>>16&255),c.push(s>>8&255),c.push(s&255)),s=s<<6|a.indexOf(o.charAt(t));return r=i%4*6,r===0?(c.push(s>>16&255),c.push(s>>8&255),c.push(s&255)):r===18?(c.push(s>>10&255),c.push(s>>2&255)):r===12&&c.push(s>>4&255),new Uint8Array(c)}function vr(e){var t="",r=0,o,i,a=e.length,s=G;for(o=0;o<a;o++)o%3===0&&o&&(t+=s[r>>18&63],t+=s[r>>12&63],t+=s[r>>6&63],t+=s[r&63]),r=(r<<8)+e[o];return i=a%3,i===0?(t+=s[r>>18&63],t+=s[r>>12&63],t+=s[r>>6&63],t+=s[r&63]):i===2?(t+=s[r>>10&63],t+=s[r>>4&63],t+=s[r<<2&63],t+=s[64]):i===1&&(t+=s[r>>2&63],t+=s[r<<4&63],t+=s[64],t+=s[64]),t}function xr(e){return Object.prototype.toString.call(e)==="[object Uint8Array]"}var Ar=new _("tag:yaml.org,2002:binary",{kind:"scalar",resolve:Cr,construct:Ir,predicate:xr,represent:vr}),Nr=Object.prototype.hasOwnProperty,qr=Object.prototype.toString;function Rr(e){if(e===null)return!0;var t=[],r,o,i,a,s,c=e;for(r=0,o=c.length;r<o;r+=1){if(i=c[r],s=!1,qr.call(i)!=="[object Object]")return!1;for(a in i)if(Nr.call(i,a))if(!s)s=!0;else return!1;if(!s)return!1;if(t.indexOf(a)===-1)t.push(a);else return!1}return!0}function
|
|
5
|
-
`:e===118?"\v":e===102?"\f":e===114?"\r":e===101?"\x1B":e===32?" ":e===34?'"':e===47?"/":e===92?"\\":e===78?"
":e===95?" ":e===76?"\u2028":e===80?"\u2029":""}for(var Pr=new Array(256),Hr=new Array(256),q=0;q<256;q++)Pr[q]=Re(q)?1:0,Hr[q]=Re(q);const Oe="24px",Kr=(e,t)=>{const r=e.__vccOpts||e;for(const[o,i]of t)r[o]=i;return r},Mr=e=>(n.pushScopeId("data-v-d5eb3109"),e=e(),n.popScopeId(),e),Gr=["aria-hidden"],Yr={key:0,"data-testid":"kui-icon-svg-title"},Zr=Mr(()=>n.createElementVNode("path",{d:"M5 22C4.45 22 3.97917 21.8042 3.5875 21.4125C3.19583 21.0208 3 20.55 3 20V6H5V20H16V22H5ZM9 18C8.45 18 7.97917 17.8042 7.5875 17.4125C7.19583 17.0208 7 16.55 7 16V4C7 3.45 7.19583 2.97917 7.5875 2.5875C7.97917 2.19583 8.45 2 9 2H18C18.55 2 19.0208 2.19583 19.4125 2.5875C19.8042 2.97917 20 3.45 20 4V16C20 16.55 19.8042 17.0208 19.4125 17.4125C19.0208 17.8042 18.55 18 18 18H9ZM9 16H18V4H9V16Z",fill:"currentColor"},null,-1)),Wr=n.defineComponent({__name:"CopyIcon",props:{title:{type:String,required:!1,default:""},color:{type:String,required:!1,default:"currentColor"},display:{type:String,required:!1,default:"block"},decorative:{type:Boolean,required:!1,default:!1},size:{type:[Number,String],required:!1,default:Oe,validator:e=>{if(typeof e=="number"&&e>0)return!0;if(typeof e=="string"){const t=String(e).replace(/px/gi,""),r=Number(t);if(r&&!isNaN(r)&&Number.isInteger(r)&&r>0)return!0}return!1}},as:{type:String,required:!1,default:"span"}},setup(e){const t=e,r=n.computed(()=>{if(typeof t.size=="number"&&t.size>0)return`${t.size}px`;if(typeof t.size=="string"){const i=String(t.size).replace(/px/gi,""),a=Number(i);if(a&&!isNaN(a)&&Number.isInteger(a)&&a>0)return`${a}px`}return Oe}),o=n.computed(()=>({boxSizing:"border-box",color:t.color,display:t.display,height:r.value,lineHeight:"0",width:r.value}));return(i,a)=>(n.openBlock(),n.createBlock(n.resolveDynamicComponent(e.as),{"aria-hidden":e.decorative?"true":void 0,class:"kui-icon copy-icon","data-testid":"kui-icon-wrapper-copy-icon",style:n.normalizeStyle(o.value)},{default:n.withCtx(()=>[(n.openBlock(),n.createElementBlock("svg",{"aria-hidden":e.decorative?"true":void 0,"data-testid":"kui-icon-svg-copy-icon",fill:"none",height:"100%",role:"img",viewBox:"0 0 24 24",width:"100%",xmlns:"http://www.w3.org/2000/svg"},[e.title?(n.openBlock(),n.createElementBlock("title",Yr,n.toDisplayString(e.title),1)):n.createCommentVNode("",!0),Zr],8,Gr))]),_:1},8,["aria-hidden","style"]))}}),Qr=Kr(Wr,[["__scopeId","data-v-d5eb3109"]]),Jr=[];for(let e=0;e<256;++e)Jr.push((e+256).toString(16).slice(1));typeof crypto<"u"&&crypto.randomUUID&&crypto.randomUUID.bind(crypto);const Xr={class:"kong-ui-public-entity-link","data-testid":"entity-link-parent"},en={key:0,class:"deleted-entity"},tn={key:1},rn=["onClick"],nn=n.defineComponent({__name:"EntityLink",props:{entityLinkData:{type:Object,required:!0},externalLink:{type:String,required:!1,default:""},newWindow:{type:Boolean,required:!1,default:!1},allowCopy:{type:Boolean,required:!1,default:!1}},setup(e){const t=e,r=n.ref(),{isTruncated:o}=Ie.useTruncationDetector(r),{i18n:{t:i}}=Ie.useI18n(),a=i("global.actions.copyId"),s=n.ref(a),c=n.computed(()=>t.entityLinkData.deleted??!1),p=n.computed(()=>{var l;return(l=t.entityLinkData.id)!=null&&l.toString().includes(":")?t.entityLinkData.id.toString().split(":")[1]:t.entityLinkData.id}),u=n.computed(()=>{var l;return`${(l=p.value)==null?void 0:l.toString().slice(0,5)} (deleted)`}),m=async l=>{await l(p.value||"")&&(s.value=i("global.actions.copyToClipboard"),setTimeout(()=>{s.value=a},1800))};return(l,h)=>{const y=n.resolveComponent("KTooltip"),S=n.resolveComponent("KExternalLink"),g=n.resolveComponent("KClipboardProvider");return n.openBlock(),n.createElementBlock("div",Xr,[c.value?(n.openBlock(),n.createElementBlock("div",en,n.toDisplayString(u.value),1)):p.value?p.value?(n.openBlock(),n.createBlock(S,{key:2,class:"entity-link","hide-icon":!e.newWindow,href:e.externalLink,target:e.newWindow?"_blank":"_self"},{default:n.withCtx(()=>[n.createVNode(y,{text:n.unref(o)&&e.entityLinkData.label||""},{default:n.withCtx(()=>[n.createElementVNode("span",{ref_key:"textContent",ref:r,class:"entity-link-label"},n.toDisplayString(e.entityLinkData.label),513)]),_:1},8,["text"])]),_:1},8,["hide-icon","href","target"])):n.createCommentVNode("",!0):(n.openBlock(),n.createElementBlock("div",tn,n.toDisplayString(" – "))),p.value&&e.allowCopy?(n.openBlock(),n.createBlock(y,{key:s.value,class:"copy-uuid-tooltip","max-width":"160",placement:"bottomEnd",text:s.value},{default:n.withCtx(()=>[n.createVNode(g,null,{default:n.withCtx(({copyToClipboard:C})=>[n.createElementVNode("span",{class:"entity-link-copy-id",onClick:n.withModifiers(R=>m(C),["stop"])},[n.createVNode(n.unref(Qr),{class:"copy-icon",color:n.unref(It),"data-testid":"copy-id",size:n.unref(vt)},null,8,["color","size"])],8,rn)]),_:1})]),_:1},8,["text"])):n.createCommentVNode("",!0)])}}}),on=Ct(nn,[["__scopeId","data-v-be5bda4c"]]),an=n.defineComponent({__name:"TopNTableRenderer",props:{query:{},context:{},queryReady:{type:Boolean},chartOptions:{},height:{}},setup(e){const t=e,r=o=>{var i;if((i=t.chartOptions)!=null&&i.entityLink)if(o.id.includes(":")){const[a,s]=o.id.split(":");return t.chartOptions.entityLink.replace(J,a).replace(P,s)}else return t.chartOptions.entityLink.replace(P,o.id);return""};return(o,i)=>(n.openBlock(),n.createBlock($,{context:o.context,query:o.query,"query-ready":o.queryReady},{default:n.withCtx(({data:a})=>[n.createVNode(n.unref(E.TopNTable),{data:a,description:o.chartOptions.description,"synthetics-data-key":o.chartOptions.syntheticsDataKey,title:o.chartOptions.chartTitle||""},n.createSlots({_:2},[t.chartOptions.entityLink?{name:"name",fn:n.withCtx(({record:s})=>[n.createVNode(n.unref(on),{"entity-link-data":{id:s.id,label:s.name,deleted:s.deleted},"external-link":r(s)},null,8,["entity-link-data","external-link"])]),key:"0"}:void 0]),1032,["data","description","synthetics-data-key","title"])]),_:1},8,["context","query","query-ready"]))}}),sn={class:"tile-boundary"},cn=I(n.defineComponent({__name:"DashboardTile",props:{definition:{},context:{},height:{default:170},queryReady:{type:Boolean}},setup(e){n.useCssVars(a=>({58871060:`${a.height}px`}));const t=parseInt(me,10),r=e,o={[b.TimeseriesLine]:Ze,[b.HorizontalBar]:fe,[b.VerticalBar]:fe,[b.Gauge]:Me,[b.GoldenSignals]:Qe,[b.TopN]:an,[b.Slottable]:void 0},i=n.computed(()=>{const a=o[r.definition.chart.type];return a&&{component:a,rendererProps:{query:r.definition.query,context:r.context,queryReady:r.queryReady,chartOptions:r.definition.chart,height:r.height-t*2}}});return(a,s)=>(n.openBlock(),n.createElementBlock("div",sn,[i.value?(n.openBlock(),n.createBlock(n.resolveDynamicComponent(i.value.component),n.normalizeProps(n.mergeProps({key:0},i.value.rendererProps)),null,16)):n.createCommentVNode("",!0)]))}}),[["__scopeId","data-v-69b5e552"]]),ln=(e,t,r)=>{const o=new Map;r.forEach(a=>{const s=a.layout.position.row,c=o.get(s),p=a.layout.size.rows===1&&!!a.layout.size.fitToContent;c===void 0?o.set(s,p):o.set(s,c&&p)});const i=[];for(let a=0;a<e;a++)o.get(a)?i.push("auto"):i.push(`${t}px`);return i},Le=I(n.defineComponent({__name:"GridLayout",props:{gridSize:{type:Object,required:!0},tileHeight:{type:Number,required:!1,default:()=>170},tiles:{type:Array,required:!0}},setup(e){n.useCssVars(c=>({"13009fee":e.gridSize.cols,c934c2be:a.value}));const t=e,r=n.ref(null),o=n.ref(0),i=new ResizeObserver(c=>{o.value=c[0].contentRect.width});n.onMounted(()=>{r.value&&i.observe(r.value)}),n.onUnmounted(()=>{r.value&&i.unobserve(r.value)});const a=n.computed(()=>{var p;return ln((p=t.gridSize)==null?void 0:p.rows,t.tileHeight,t.tiles).join(" ")}),s=n.computed(()=>t.tiles.map((c,p)=>({key:`tile-${p}`,tile:c,style:{"grid-column-start":c.layout.position.col+1,"grid-column-end":c.layout.position.col+1+c.layout.size.cols,"grid-row-start":c.layout.position.row+1,"grid-row-end":c.layout.position.row+1+c.layout.size.rows}})));return(c,p)=>(n.openBlock(),n.createElementBlock("div",{ref_key:"gridContainer",ref:r,class:"kong-ui-public-grid-layout"},[(n.openBlock(!0),n.createElementBlock(n.Fragment,null,n.renderList(s.value,u=>(n.openBlock(),n.createElementBlock("div",{key:u.key,class:n.normalizeClass(["grid-cell",{"empty-cell":!u.tile}]),style:n.normalizeStyle(u.style)},[n.renderSlot(c.$slots,"tile",{style:n.normalizeStyle(u.style),tile:u.tile},void 0,!0)],6))),128))],512))}}),[["__scopeId","data-v-04f865ab"]]),un={class:"kong-ui-public-dashboard-renderer"},pn={key:0,class:"tile-container"},dn=I(n.defineComponent({__name:"DashboardRenderer",props:{context:{},config:{}},setup(e){const t=e,{i18n:r}=ye.useI18n(),o=n.inject(F);o||(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/dashboard-renderer/README.md#requirements"));const i=Ve.useAnalyticsConfigStore(),a=n.computed(()=>t.context.timeSpec?t.context.timeSpec:{type:"relative",time_range:i.defaultQueryTimeForOrg}),s=n.computed(()=>!!t.context.timeSpec||!i.loading),c=n.computed(()=>t.config.tiles.map((u,m)=>{var h;let l=u.definition;if("description"in l.chart){const y=(h=l.chart.description)==null?void 0:h.replace(X,()=>{const g=`renderer.trendRange.${a.value.type==="absolute"?"custom":a.value.time_range}`;return r.te(g)?r.t(g):""});l={...l,chart:{...l.chart,description:y}}}return{layout:u.layout,meta:l,id:m}})),p=n.computed(()=>{let{tz:u,refreshInterval:m}=t.context;return u||(u=new Intl.DateTimeFormat().resolvedOptions().timeZone),m===void 0&&(m=3e4),{...t.context,tz:u,timeSpec:a.value,refreshInterval:m}});return(u,m)=>{const l=n.resolveComponent("KAlert");return n.openBlock(),n.createElementBlock("div",un,[n.unref(o)?(n.openBlock(),n.createBlock(Le,{key:1,"grid-size":u.config.gridSize,"tile-height":u.config.tileHeight,tiles:c.value},{tile:n.withCtx(({tile:h})=>[h.meta.chart.type===n.unref(b).Slottable?(n.openBlock(),n.createElementBlock("div",pn,[n.renderSlot(u.$slots,h.meta.chart.id,{},void 0,!0)])):(n.openBlock(),n.createBlock(cn,{key:1,class:"tile-container",context:p.value,definition:h.meta,height:h.layout.size.rows*(u.config.tileHeight||n.unref(170))+parseInt(n.unref(me),10),"query-ready":s.value},null,8,["context","definition","height","query-ready"]))]),_:3},8,["grid-size","tile-height","tiles"])):(n.openBlock(),n.createBlock(l,{key:0,appearance:"danger"},{default:n.withCtx(()=>[n.createTextVNode(n.toDisplayString(n.unref(r).t("renderer.noQueryBridge")),1)]),_:1}))])}}}),[["__scopeId","data-v-2dd03268"]]);d.CP_ID_TOKEN=J,d.ChartTypes=b,d.DEFAULT_TILE_HEIGHT=170,d.DEFAULT_TILE_REFRESH_INTERVAL_MS=3e4,d.DashboardRenderer=dn,d.ENTITY_ID_TOKEN=P,d.GridLayout=Le,d.INJECT_QUERY_PROVIDER=F,d.TIMEFRAME_TOKEN=X,d.barChartSchema=ne,d.dashboardConfigSchema=$e,d.exploreV4QuerySchema=ce,d.gaugeChartSchema=oe,d.metricCardSchema=se,d.slottableSchema=re,d.tileConfigSchema=pe,d.tileDefinitionSchema=le,d.tileLayoutSchema=ue,d.timeseriesChartSchema=ie,d.topNTableSchema=ae,Object.defineProperty(d,Symbol.toStringTag,{value:"Module"})});
|
|
4
|
+
\r`;function Cr(e){if(e===null)return!1;var t,r,o=0,i=e.length,a=G;for(r=0;r<i;r++)if(t=a.indexOf(e.charAt(r)),!(t>64)){if(t<0)return!1;o+=6}return o%8===0}function Ir(e){var t,r,o=e.replace(/[\r\n=]/g,""),i=o.length,a=G,s=0,c=[];for(t=0;t<i;t++)t%4===0&&t&&(c.push(s>>16&255),c.push(s>>8&255),c.push(s&255)),s=s<<6|a.indexOf(o.charAt(t));return r=i%4*6,r===0?(c.push(s>>16&255),c.push(s>>8&255),c.push(s&255)):r===18?(c.push(s>>10&255),c.push(s>>2&255)):r===12&&c.push(s>>4&255),new Uint8Array(c)}function vr(e){var t="",r=0,o,i,a=e.length,s=G;for(o=0;o<a;o++)o%3===0&&o&&(t+=s[r>>18&63],t+=s[r>>12&63],t+=s[r>>6&63],t+=s[r&63]),r=(r<<8)+e[o];return i=a%3,i===0?(t+=s[r>>18&63],t+=s[r>>12&63],t+=s[r>>6&63],t+=s[r&63]):i===2?(t+=s[r>>10&63],t+=s[r>>4&63],t+=s[r<<2&63],t+=s[64]):i===1&&(t+=s[r>>2&63],t+=s[r<<4&63],t+=s[64],t+=s[64]),t}function xr(e){return Object.prototype.toString.call(e)==="[object Uint8Array]"}var Ar=new _("tag:yaml.org,2002:binary",{kind:"scalar",resolve:Cr,construct:Ir,predicate:xr,represent:vr}),Nr=Object.prototype.hasOwnProperty,qr=Object.prototype.toString;function Rr(e){if(e===null)return!0;var t=[],r,o,i,a,s,c=e;for(r=0,o=c.length;r<o;r+=1){if(i=c[r],s=!1,qr.call(i)!=="[object Object]")return!1;for(a in i)if(Nr.call(i,a))if(!s)s=!0;else return!1;if(!s)return!1;if(t.indexOf(a)===-1)t.push(a);else return!1}return!0}function Lr(e){return e!==null?e:[]}var Or=new _("tag:yaml.org,2002:omap",{kind:"sequence",resolve:Rr,construct:Lr}),Dr=Object.prototype.toString;function Br(e){if(e===null)return!0;var t,r,o,i,a,s=e;for(a=new Array(s.length),t=0,r=s.length;t<r;t+=1){if(o=s[t],Dr.call(o)!=="[object Object]"||(i=Object.keys(o),i.length!==1))return!1;a[t]=[i[0],o[i[0]]]}return!0}function jr(e){if(e===null)return[];var t,r,o,i,a,s=e;for(a=new Array(s.length),t=0,r=s.length;t<r;t+=1)o=s[t],i=Object.keys(o),a[t]=[i[0],o[i[0]]];return a}var Vr=new _("tag:yaml.org,2002:pairs",{kind:"sequence",resolve:Br,construct:jr}),$r=Object.prototype.hasOwnProperty;function zr(e){if(e===null)return!0;var t,r=e;for(t in r)if($r.call(r,t)&&r[t]!==null)return!1;return!0}function Ur(e){return e!==null?e:{}}var Fr=new _("tag:yaml.org,2002:set",{kind:"mapping",resolve:zr,construct:Ur});_r.extend({implicit:[Sr,Er],explicit:[Ar,Or,Vr,Fr]});function Re(e){return e===48?"\0":e===97?"\x07":e===98?"\b":e===116||e===9?" ":e===110?`
|
|
5
|
+
`:e===118?"\v":e===102?"\f":e===114?"\r":e===101?"\x1B":e===32?" ":e===34?'"':e===47?"/":e===92?"\\":e===78?"
":e===95?" ":e===76?"\u2028":e===80?"\u2029":""}for(var Pr=new Array(256),Hr=new Array(256),q=0;q<256;q++)Pr[q]=Re(q)?1:0,Hr[q]=Re(q);const Le="24px",Kr=(e,t)=>{const r=e.__vccOpts||e;for(const[o,i]of t)r[o]=i;return r},Mr=e=>(n.pushScopeId("data-v-a3352b0f"),e=e(),n.popScopeId(),e),Gr=["aria-hidden"],Yr={key:0,"data-testid":"kui-icon-svg-title"},Zr=Mr(()=>n.createElementVNode("path",{d:"M5 22C4.45 22 3.97917 21.8042 3.5875 21.4125C3.19583 21.0208 3 20.55 3 20V6H5V20H16V22H5ZM9 18C8.45 18 7.97917 17.8042 7.5875 17.4125C7.19583 17.0208 7 16.55 7 16V4C7 3.45 7.19583 2.97917 7.5875 2.5875C7.97917 2.19583 8.45 2 9 2H18C18.55 2 19.0208 2.19583 19.4125 2.5875C19.8042 2.97917 20 3.45 20 4V16C20 16.55 19.8042 17.0208 19.4125 17.4125C19.0208 17.8042 18.55 18 18 18H9ZM9 16H18V4H9V16Z",fill:"currentColor"},null,-1)),Wr=n.defineComponent({__name:"CopyIcon",props:{title:{type:String,required:!1,default:""},color:{type:String,required:!1,default:"currentColor"},display:{type:String,required:!1,default:"block"},decorative:{type:Boolean,required:!1,default:!1},size:{type:[Number,String],required:!1,default:Le,validator:e=>{if(typeof e=="number"&&e>0)return!0;if(typeof e=="string"){const t=String(e).replace(/px/gi,""),r=Number(t);if(r&&!isNaN(r)&&Number.isInteger(r)&&r>0)return!0}return!1}},as:{type:String,required:!1,default:"span"}},setup(e){const t=e,r=n.computed(()=>{if(typeof t.size=="number"&&t.size>0)return`${t.size}px`;if(typeof t.size=="string"){const i=String(t.size).replace(/px/gi,""),a=Number(i);if(a&&!isNaN(a)&&Number.isInteger(a)&&a>0)return`${a}px`}return Le}),o=n.computed(()=>({boxSizing:"border-box",color:t.color,display:t.display,height:r.value,lineHeight:"0",width:r.value}));return(i,a)=>(n.openBlock(),n.createBlock(n.resolveDynamicComponent(e.as),{"aria-hidden":e.decorative?"true":void 0,class:"kui-icon copy-icon","data-testid":"kui-icon-wrapper-copy-icon",style:n.normalizeStyle(o.value)},{default:n.withCtx(()=>[(n.openBlock(),n.createElementBlock("svg",{"aria-hidden":e.decorative?"true":void 0,"data-testid":"kui-icon-svg-copy-icon",fill:"none",height:"100%",role:"img",viewBox:"0 0 24 24",width:"100%",xmlns:"http://www.w3.org/2000/svg"},[e.title?(n.openBlock(),n.createElementBlock("title",Yr,n.toDisplayString(e.title),1)):n.createCommentVNode("",!0),Zr],8,Gr))]),_:1},8,["aria-hidden","style"]))}}),Qr=Kr(Wr,[["__scopeId","data-v-a3352b0f"]]),Jr=[];for(let e=0;e<256;++e)Jr.push((e+256).toString(16).slice(1));typeof crypto<"u"&&crypto.randomUUID&&crypto.randomUUID.bind(crypto);const Xr={class:"kong-ui-public-entity-link","data-testid":"entity-link-parent"},en={key:0,class:"deleted-entity"},tn={key:1},rn=["onClick"],nn=n.defineComponent({__name:"EntityLink",props:{entityLinkData:{type:Object,required:!0},externalLink:{type:String,required:!1,default:""},newWindow:{type:Boolean,required:!1,default:!1},allowCopy:{type:Boolean,required:!1,default:!1}},setup(e){const t=e,r=n.ref(),{isTruncated:o}=Ie.useTruncationDetector(r),{i18n:{t:i}}=Ie.useI18n(),a=i("global.actions.copyId"),s=n.ref(a),c=n.computed(()=>t.entityLinkData.deleted??!1),p=n.computed(()=>{var l;return(l=t.entityLinkData.id)!=null&&l.toString().includes(":")?t.entityLinkData.id.toString().split(":")[1]:t.entityLinkData.id}),u=n.computed(()=>{var l;return`${(l=p.value)==null?void 0:l.toString().slice(0,5)} (deleted)`}),m=async l=>{await l(p.value||"")&&(s.value=i("global.actions.copyToClipboard"),setTimeout(()=>{s.value=a},1800))};return(l,h)=>{const y=n.resolveComponent("KTooltip"),S=n.resolveComponent("KExternalLink"),g=n.resolveComponent("KClipboardProvider");return n.openBlock(),n.createElementBlock("div",Xr,[c.value?(n.openBlock(),n.createElementBlock("div",en,n.toDisplayString(u.value),1)):p.value?p.value?(n.openBlock(),n.createBlock(S,{key:2,class:"entity-link","hide-icon":!e.newWindow,href:e.externalLink,target:e.newWindow?"_blank":"_self"},{default:n.withCtx(()=>[n.createVNode(y,{text:n.unref(o)&&e.entityLinkData.label||""},{default:n.withCtx(()=>[n.createElementVNode("span",{ref_key:"textContent",ref:r,class:"entity-link-label"},n.toDisplayString(e.entityLinkData.label),513)]),_:1},8,["text"])]),_:1},8,["hide-icon","href","target"])):n.createCommentVNode("",!0):(n.openBlock(),n.createElementBlock("div",tn,n.toDisplayString(" – "))),p.value&&e.allowCopy?(n.openBlock(),n.createBlock(y,{key:s.value,class:"copy-uuid-tooltip","max-width":"160",placement:"bottomEnd",text:s.value},{default:n.withCtx(()=>[n.createVNode(g,null,{default:n.withCtx(({copyToClipboard:C})=>[n.createElementVNode("span",{class:"entity-link-copy-id",onClick:n.withModifiers(R=>m(C),["stop"])},[n.createVNode(n.unref(Qr),{class:"copy-icon",color:n.unref(It),"data-testid":"copy-id",size:n.unref(vt)},null,8,["color","size"])],8,rn)]),_:1})]),_:1},8,["text"])):n.createCommentVNode("",!0)])}}}),on=Ct(nn,[["__scopeId","data-v-be5bda4c"]]),an=n.defineComponent({__name:"TopNTableRenderer",props:{query:{},context:{},queryReady:{type:Boolean},chartOptions:{},height:{}},setup(e){const t=e,r=o=>{var i;if((i=t.chartOptions)!=null&&i.entityLink)if(o.id.includes(":")){const[a,s]=o.id.split(":");return t.chartOptions.entityLink.replace(J,a).replace(P,s)}else return t.chartOptions.entityLink.replace(P,o.id);return""};return(o,i)=>(n.openBlock(),n.createBlock($,{context:o.context,query:o.query,"query-ready":o.queryReady},{default:n.withCtx(({data:a})=>[n.createVNode(n.unref(E.TopNTable),{data:a,description:o.chartOptions.description,"synthetics-data-key":o.chartOptions.syntheticsDataKey,title:o.chartOptions.chartTitle||""},n.createSlots({_:2},[t.chartOptions.entityLink?{name:"name",fn:n.withCtx(({record:s})=>[n.createVNode(n.unref(on),{"entity-link-data":{id:s.id,label:s.name,deleted:s.deleted},"external-link":r(s)},null,8,["entity-link-data","external-link"])]),key:"0"}:void 0]),1032,["data","description","synthetics-data-key","title"])]),_:1},8,["context","query","query-ready"]))}}),sn={class:"tile-boundary"},cn=I(n.defineComponent({__name:"DashboardTile",props:{definition:{},context:{},height:{default:170},queryReady:{type:Boolean}},setup(e){n.useCssVars(a=>({58871060:`${a.height}px`}));const t=parseInt(me,10),r=e,o={[b.TimeseriesLine]:Ze,[b.HorizontalBar]:fe,[b.VerticalBar]:fe,[b.Gauge]:Me,[b.GoldenSignals]:Qe,[b.TopN]:an,[b.Slottable]:void 0},i=n.computed(()=>{const a=o[r.definition.chart.type];return a&&{component:a,rendererProps:{query:r.definition.query,context:r.context,queryReady:r.queryReady,chartOptions:r.definition.chart,height:r.height-t*2}}});return(a,s)=>(n.openBlock(),n.createElementBlock("div",sn,[i.value?(n.openBlock(),n.createBlock(n.resolveDynamicComponent(i.value.component),n.normalizeProps(n.mergeProps({key:0},i.value.rendererProps)),null,16)):n.createCommentVNode("",!0)]))}}),[["__scopeId","data-v-69b5e552"]]),ln=(e,t,r)=>{const o=new Map;r.forEach(a=>{const s=a.layout.position.row,c=o.get(s),p=a.layout.size.rows===1&&!!a.layout.size.fitToContent;c===void 0?o.set(s,p):o.set(s,c&&p)});const i=[];for(let a=0;a<e;a++)o.get(a)?i.push("auto"):i.push(`${t}px`);return i},Oe=I(n.defineComponent({__name:"GridLayout",props:{gridSize:{type:Object,required:!0},tileHeight:{type:Number,required:!1,default:()=>170},tiles:{type:Array,required:!0}},setup(e){n.useCssVars(c=>({"13009fee":e.gridSize.cols,c934c2be:a.value}));const t=e,r=n.ref(null),o=n.ref(0),i=new ResizeObserver(c=>{o.value=c[0].contentRect.width});n.onMounted(()=>{r.value&&i.observe(r.value)}),n.onUnmounted(()=>{r.value&&i.unobserve(r.value)});const a=n.computed(()=>{var p;return ln((p=t.gridSize)==null?void 0:p.rows,t.tileHeight,t.tiles).join(" ")}),s=n.computed(()=>t.tiles.map((c,p)=>({key:`tile-${p}`,tile:c,style:{"grid-column-start":c.layout.position.col+1,"grid-column-end":c.layout.position.col+1+c.layout.size.cols,"grid-row-start":c.layout.position.row+1,"grid-row-end":c.layout.position.row+1+c.layout.size.rows}})));return(c,p)=>(n.openBlock(),n.createElementBlock("div",{ref_key:"gridContainer",ref:r,class:"kong-ui-public-grid-layout"},[(n.openBlock(!0),n.createElementBlock(n.Fragment,null,n.renderList(s.value,u=>(n.openBlock(),n.createElementBlock("div",{key:u.key,class:n.normalizeClass(["grid-cell",{"empty-cell":!u.tile}]),style:n.normalizeStyle(u.style)},[n.renderSlot(c.$slots,"tile",{style:n.normalizeStyle(u.style),tile:u.tile},void 0,!0)],6))),128))],512))}}),[["__scopeId","data-v-04f865ab"]]),un={class:"kong-ui-public-dashboard-renderer"},pn={key:0,class:"tile-container"},dn=I(n.defineComponent({__name:"DashboardRenderer",props:{context:{},config:{}},setup(e){const t=e,{i18n:r}=ye.useI18n(),o=n.inject(F);o||(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/dashboard-renderer/README.md#requirements"));const i=Ve.useAnalyticsConfigStore(),a=n.computed(()=>t.context.timeSpec?t.context.timeSpec:{type:"relative",time_range:i.defaultQueryTimeForOrg}),s=n.computed(()=>!!t.context.timeSpec||!i.loading),c=n.computed(()=>t.config.tiles.map((u,m)=>{var h;let l=u.definition;if("description"in l.chart){const y=(h=l.chart.description)==null?void 0:h.replace(X,()=>{const g=`renderer.trendRange.${a.value.type==="absolute"?"custom":a.value.time_range}`;return r.te(g)?r.t(g):""});l={...l,chart:{...l.chart,description:y}}}return{layout:u.layout,meta:l,id:m}})),p=n.computed(()=>{let{tz:u,refreshInterval:m}=t.context;return u||(u=new Intl.DateTimeFormat().resolvedOptions().timeZone),m===void 0&&(m=3e4),{...t.context,tz:u,timeSpec:a.value,refreshInterval:m}});return(u,m)=>{const l=n.resolveComponent("KAlert");return n.openBlock(),n.createElementBlock("div",un,[n.unref(o)?(n.openBlock(),n.createBlock(Oe,{key:1,"grid-size":u.config.gridSize,"tile-height":u.config.tileHeight,tiles:c.value},{tile:n.withCtx(({tile:h})=>[h.meta.chart.type===n.unref(b).Slottable?(n.openBlock(),n.createElementBlock("div",pn,[n.renderSlot(u.$slots,h.meta.chart.id,{},void 0,!0)])):(n.openBlock(),n.createBlock(cn,{key:1,class:"tile-container",context:p.value,definition:h.meta,height:h.layout.size.rows*(u.config.tileHeight||n.unref(170))+parseInt(n.unref(me),10),"query-ready":s.value},null,8,["context","definition","height","query-ready"]))]),_:3},8,["grid-size","tile-height","tiles"])):(n.openBlock(),n.createBlock(l,{key:0,appearance:"danger"},{default:n.withCtx(()=>[n.createTextVNode(n.toDisplayString(n.unref(r).t("renderer.noQueryBridge")),1)]),_:1}))])}}}),[["__scopeId","data-v-2dd03268"]]);d.CP_ID_TOKEN=J,d.ChartTypes=b,d.DEFAULT_TILE_HEIGHT=170,d.DEFAULT_TILE_REFRESH_INTERVAL_MS=3e4,d.DashboardRenderer=dn,d.ENTITY_ID_TOKEN=P,d.GridLayout=Oe,d.INJECT_QUERY_PROVIDER=F,d.TIMEFRAME_TOKEN=X,d.barChartSchema=ne,d.dashboardConfigSchema=$e,d.exploreV4QuerySchema=ce,d.gaugeChartSchema=oe,d.metricCardSchema=se,d.slottableSchema=re,d.tileConfigSchema=pe,d.tileDefinitionSchema=le,d.tileLayoutSchema=ue,d.timeseriesChartSchema=ie,d.topNTableSchema=ae,Object.defineProperty(d,Symbol.toStringTag,{value:"Module"})});
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@kong-ui-public/dashboard-renderer",
|
|
3
|
-
"version": "0.22.
|
|
3
|
+
"version": "0.22.4",
|
|
4
4
|
"type": "module",
|
|
5
5
|
"main": "./dist/dashboard-renderer.umd.js",
|
|
6
6
|
"module": "./dist/dashboard-renderer.es.js",
|
|
@@ -21,18 +21,18 @@
|
|
|
21
21
|
"access": "public"
|
|
22
22
|
},
|
|
23
23
|
"devDependencies": {
|
|
24
|
-
"@kong/design-tokens": "1.
|
|
24
|
+
"@kong/design-tokens": "1.13.2",
|
|
25
25
|
"@kong/kongponents": "9.0.0-alpha.162",
|
|
26
26
|
"json-schema-to-ts": "^3.0.1",
|
|
27
27
|
"pinia": ">= 2.1.7 < 3",
|
|
28
28
|
"swrv": "^1.0.4",
|
|
29
29
|
"vue": "^3.4.27",
|
|
30
|
-
"@kong-ui-public/analytics-
|
|
31
|
-
"@kong-ui-public/analytics-
|
|
32
|
-
"@kong-ui-public/analytics-
|
|
33
|
-
"@kong-ui-public/analytics-utilities": "^3.5.
|
|
30
|
+
"@kong-ui-public/analytics-config-store": "^0.6.1",
|
|
31
|
+
"@kong-ui-public/analytics-metric-provider": "^7.2.3",
|
|
32
|
+
"@kong-ui-public/analytics-chart": "^4.1.3",
|
|
33
|
+
"@kong-ui-public/analytics-utilities": "^3.5.1",
|
|
34
34
|
"@kong-ui-public/i18n": "^2.2.1",
|
|
35
|
-
"@kong-ui-public/sandbox-layout": "^2.1.
|
|
35
|
+
"@kong-ui-public/sandbox-layout": "^2.1.3"
|
|
36
36
|
},
|
|
37
37
|
"repository": {
|
|
38
38
|
"type": "git",
|
|
@@ -55,16 +55,16 @@
|
|
|
55
55
|
"@kong/kongponents": "^9.0.0-alpha.162",
|
|
56
56
|
"swrv": "^1.0.4",
|
|
57
57
|
"vue": ">= 3.3.13 < 4",
|
|
58
|
-
"@kong-ui-public/analytics-chart": "^4.1.
|
|
59
|
-
"@kong-ui-public/analytics-
|
|
60
|
-
"@kong-ui-public/analytics-
|
|
61
|
-
"@kong-ui-public/
|
|
62
|
-
"@kong-ui-public/
|
|
58
|
+
"@kong-ui-public/analytics-chart": "^4.1.3",
|
|
59
|
+
"@kong-ui-public/analytics-config-store": "^0.6.1",
|
|
60
|
+
"@kong-ui-public/analytics-metric-provider": "^7.2.3",
|
|
61
|
+
"@kong-ui-public/analytics-utilities": "^3.5.1",
|
|
62
|
+
"@kong-ui-public/i18n": "^2.2.1"
|
|
63
63
|
},
|
|
64
64
|
"dependencies": {
|
|
65
65
|
"ajv": "^8.12.0",
|
|
66
|
-
"@kong-ui-public/core": "^1.7.
|
|
67
|
-
"@kong-ui-public/entities-shared": "^3.3.
|
|
66
|
+
"@kong-ui-public/core": "^1.7.2",
|
|
67
|
+
"@kong-ui-public/entities-shared": "^3.3.4"
|
|
68
68
|
},
|
|
69
69
|
"scripts": {
|
|
70
70
|
"dev": "cross-env USE_SANDBOX=true vite",
|