/usr/share/grafana/public/app/plugins/datasource/parca/dist
/*! For license information please see module.js.LICENSE.txt */ /* [create-plugin] version: 5.22.0 */ define(["module","@grafana/data","react","@emotion/css","@grafana/ui","@grafana/runtime","lodash","rxjs"],((e,t,n,r,a,o,i,s)=>(()=>{"use strict";var l={7:e=>{e.exports=a},44:(e,t,n)=>{var r=n(959),a=Symbol.for("react.element"),o=Symbol.for("react.fragment"),i=Object.prototype.hasOwnProperty,s=r.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED.ReactCurrentOwner,l={key:!0,ref:!0,__self:!0,__source:!0};function c(e,t,n){var r,o={},c=null,u=null;for(r in void 0!==n&&(c=""+n),void 0!==t.key&&(c=""+t.key),void 0!==t.ref&&(u=t.ref),t)i.call(t,r)&&!l.hasOwnProperty(r)&&(o[r]=t[r]);if(e&&e.defaultProps)for(r in t=e.defaultProps)void 0===o[r]&&(o[r]=t[r]);return{$$typeof:a,type:e,key:c,ref:u,props:o,_owner:s.current}}t.jsx=c,t.jsxs=c},89:e=>{e.exports=r},241:e=>{e.exports=i},269:e=>{e.exports=s},308:t=>{t.exports=e},531:e=>{e.exports=o},728:(e,t,n)=>{e.exports=n(44)},781:e=>{e.exports=t},959:e=>{e.exports=n}},c={};function u(e){var t=c[e];if(void 0!==t)return t.exports;var n=c[e]={exports:{}};return l[e](n,n.exports,u),n.exports}u.n=e=>{var t=e&&e.__esModule?()=>e.default:()=>e;return u.d(t,{a:t}),t},u.d=(e,t)=>{for(var n in t)u.o(t,n)&&!u.o(e,n)&&Object.defineProperty(e,n,{enumerable:!0,get:t[n]})},u.o=(e,t)=>Object.prototype.hasOwnProperty.call(e,t),u.r=e=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},u.p="public/plugins/parca/";var d={};u.r(d),u.d(d,{plugin:()=>$e});var p=u(308),h=u.n(p);u.p=h()&&h().uri?h().uri.slice(0,h().uri.lastIndexOf("/")+1):"public/plugins/parca/";var g=u(781),m=u(728),f=u(89),b=u(959),y=u(7);const v=({dataSourceName:e,docsLink:t,hasRequiredFields:n=!0,className:r})=>{const a=(0,y.useTheme2)(),o={container:(0,f.css)({p:{margin:0},"p + p":{marginTop:a.spacing(2)}}),text:(0,f.css)({...a.typography.body,color:a.colors.text.secondary,a:(0,f.css)({color:a.colors.text.link,textDecoration:"underline","&:hover":{textDecoration:"none"}})})};return b.createElement("div",{className:(0,f.cx)(o.container,r)},b.createElement("p",{className:o.text},"Before you can use the ",e," data source, you must configure it below or in the config file. For detailed instructions,"," ",b.createElement("a",{href:t,target:"_blank",rel:"noreferrer"},"view the documentation"),"."),n&&b.createElement("p",{className:o.text},b.createElement("i",null,"Fields marked with * are required")))},C=({children:e,title:t,description:n,isCollapsible:r=!1,isInitiallyOpen:a=!0,kind:o="section",className:i})=>{const{colors:s,typography:l,spacing:c}=(0,y.useTheme2)(),[u,d]=(0,b.useState)(!r||a),p=u?"angle-up":"angle-down",h="sub-section"===o,g=`${u?"Collapse":"Expand"} section ${t}`,m={header:(0,f.css)({display:"flex",justifyContent:"space-between",alignItems:"center"}),title:(0,f.css)({margin:0}),subtitle:(0,f.css)({margin:0,fontWeight:l.fontWeightRegular}),descriptionText:(0,f.css)({marginTop:c(h?.25:.5),marginBottom:0,...l.bodySmall,color:s.text.secondary}),content:(0,f.css)({marginTop:c(2)})};return b.createElement("div",{className:i},b.createElement("div",{className:m.header},"section"===o?b.createElement("h3",{className:m.title},t):b.createElement("h6",{className:m.subtitle},t),r&&b.createElement(y.IconButton,{name:p,onClick:()=>d(!u),type:"button",size:"xl","aria-label":g})),n&&b.createElement("p",{className:m.descriptionText},n),u&&b.createElement("div",{className:m.content},e))},w=({children:e,...t})=>b.createElement(C,{...t,kind:"section"},e),x=({config:e,onChange:t,description:n,urlPlaceholder:r,urlTooltip:a,urlLabel:o,className:i})=>{const s=void 0!==e.url&&/^(ftp|http|https):\/\/(\w+:{0,1}\w*@)?(\S+)(:[0-9]+)?(\/|\/([\w#!:.?+=&%@!\-\/]))?$/.test(e.url),l={container:(0,f.css)({maxWidth:578})};return b.createElement(b.Fragment,null,b.createElement(w,{title:"Connection",description:n,className:(0,f.cx)(l.container,i)},b.createElement(y.InlineField,{htmlFor:"connection-url",label:o||"URL",labelWidth:24,tooltip:a||b.createElement(b.Fragment,null,"Specify a complete HTTP URL",b.createElement("br",null),"(for example https://example.com:8080)"),grow:!0,disabled:e.readOnly,required:!0,invalid:!s&&!e.readOnly,error:s?"":"Please enter a valid URL",interactive:!0},b.createElement(y.Input,{id:"connection-url","aria-label":"Data source connection URL",onChange:n=>t({...e,url:n.currentTarget.value}),value:e.url||"",placeholder:r||"URL"}))))},O=()=>({inlineFieldNoMarginRight:(0,f.css)({marginRight:0}),inlineFieldWithSecret:(0,f.css)({'[class$="layoutChildrenWrapper"]:first-child':{flexGrow:1}})}),E=({user:e,passwordConfigured:t,userLabel:n="User",userTooltip:r="The username of the data source account",userPlaceholder:a="User",passwordLabel:o="Password",passwordTooltip:i="The password of the data source account",passwordPlaceholder:s="Password",onUserChange:l,onPasswordChange:c,onPasswordReset:u,readOnly:d})=>{const p=O(),h={lastInlineField:(0,f.css)({marginBottom:0})};return b.createElement(b.Fragment,null,b.createElement(y.InlineField,{className:p.inlineFieldNoMarginRight,label:n,labelWidth:24,tooltip:r,required:!0,htmlFor:"basic-auth-user-input",interactive:!0,grow:!0,disabled:d},b.createElement(y.Input,{id:"basic-auth-user-input",placeholder:a,value:e,onChange:e=>l(e.currentTarget.value),required:!0})),b.createElement(y.InlineField,{className:(0,f.cx)(p.inlineFieldNoMarginRight,p.inlineFieldWithSecret,h.lastInlineField),label:o,labelWidth:24,tooltip:i,required:!0,htmlFor:"basic-auth-password-input",interactive:!0,grow:!0,disabled:d},b.createElement(y.SecretInput,{id:"basic-auth-password-input",isConfigured:t,onReset:d?()=>{}:u,placeholder:s,onChange:e=>c(e.currentTarget.value),required:!0})))},j=({children:e,...t})=>b.createElement(C,{...t,kind:"sub-section"},e);var S=(e=>(e.NoAuth="NoAuth",e.BasicAuth="BasicAuth",e.OAuthForward="OAuthForward",e.CrossSiteCredentials="CrossSiteCredentials",e))(S||{});const A={[S.BasicAuth]:{label:"Basic authentication",value:S.BasicAuth,description:"Authenticate with your data source username and password"},[S.CrossSiteCredentials]:{label:"Enable cross-site access control requests",value:S.CrossSiteCredentials,description:"Allow cross-site Access-Control requests with your existing credentials and cookies. This enables the server to authenticate the user and perform authorized requests on their behalf on other domains."},[S.OAuthForward]:{label:"Forward OAuth Identity",value:S.OAuthForward,description:"Forward the OAuth access token (and if available: the OIDC ID token) of the user querying to the data source"},[S.NoAuth]:{label:"No Authentication",value:S.NoAuth,description:"Data source is available without authentication"}},T=({selectedMethod:e,mostCommonMethod:t,visibleMethods:n,defaultOptionsOverrides:r,customMethods:a,onAuthMethodSelect:o,basicAuth:i,readOnly:s})=>{var l,c,u,d;const[p,h]=(0,b.useState)(!1),{colors:g,spacing:m}=(0,y.useTheme2)(),v=(0,b.useMemo)((()=>{var e;return null!=n?n:[S.BasicAuth,S.OAuthForward,S.NoAuth,...null!=(e=null==a?void 0:a.map((e=>e.id)))?e:[]]}),[a,n]),C=v.length>1,w=(0,b.useMemo)((()=>{var e;const n=null!=(e=null==a?void 0:a.reduce(((e,t)=>(e[t.id]={label:t.label,value:t.id,description:t.description},e)),{}))?e:{},o={};let i;for(i in A)o[i]={...A[i],...null==r?void 0:r[i]};const s={...n,...o};return v.filter((e=>Boolean(s[e]))).map((e=>{const n=s[e];return e===t&&C?{...n,label:`${n.label} (most common)`}:n}))}),[v,a,r,t,C]);let x=e;C?e===S.NoAuth&&t&&!p&&(x=t):x=v[0];let O=null;x===S.BasicAuth&&i?O=b.createElement(E,{...i,readOnly:s}):x.startsWith("custom-")&&(O=null!=(c=null==(l=null==a?void 0:a.find((e=>e.id===x)))?void 0:l.component)?c:null);const T=C?"Authentication methods":null!=(u=w[0].label)?u:"",N=C?"Choose an authentication method to access the data source":null!=(d=w[0].description)?d:"",P={authMethods:(0,f.css)({marginTop:m(2.5),...C&&{padding:m(2),border:`1px solid ${g.border.weak}`}}),selectedMethodFields:(0,f.css)({marginTop:m(1.5)})};return b.createElement(j,{title:T,description:N},b.createElement("div",{className:P.authMethods},C&&b.createElement(y.Field,{label:"Authentication method"},b.createElement(y.Select,{inputId:"auth-method-select",options:w,value:x,onChange:e=>{h(!0),o(e.value)},disabled:s})),O&&b.createElement("div",{className:P.selectedMethodFields},O)))},N=({children:e,enabled:t,label:n,tooltipText:r,onToggle:a,readOnly:o})=>{const{colors:i,spacing:s}=(0,y.useTheme2)(),l={container:(0,f.css)({marginTop:3}),checkboxContainer:(0,f.css)({display:"flex",alignItems:"center"}),infoIcon:(0,f.css)({marginTop:-2,marginLeft:5,color:i.text.secondary}),content:(0,f.css)({margin:s(1,0,2,3)})};return b.createElement("div",{className:l.container},b.createElement("div",{className:l.checkboxContainer},b.createElement(y.Checkbox,{value:t,label:n,onChange:()=>a(!t),disabled:o}),b.createElement(y.Tooltip,{placement:"top",content:r,interactive:!0},b.createElement(y.Icon,{name:"info-circle",className:l.infoIcon,size:"sm"}))),t&&e&&b.createElement("div",{className:l.content},e))},P=({enabled:e,certificateConfigured:t,onToggle:n,onCertificateChange:r,onCertificateReset:a,tooltips:o,readOnly:i})=>{var s;const l=O();return b.createElement(N,{enabled:e,label:"Add self-signed certificate",tooltipText:"Add your own Certificate Authority (CA) certificate on top of one generated by the certificate authorities for additional security measures",onToggle:e=>n(e),readOnly:i},b.createElement(y.InlineField,{label:"CA Certificate",labelWidth:24,tooltip:null!=(s=null==o?void 0:o.certificateLabel)?s:"Your self-signed certificate",required:!0,htmlFor:"self-signed-certificate-input",interactive:!0,grow:!0,className:(0,f.cx)(l.inlineFieldNoMarginRight,l.inlineFieldWithSecret),disabled:i},b.createElement(y.SecretTextArea,{id:"self-signed-certificate-input",isConfigured:t,onChange:e=>r(e.currentTarget.value),onReset:i?()=>{}:a,placeholder:"Begins with --- BEGIN CERTIFICATE ---",rows:6,required:!0})))},F=({enabled:e,serverName:t,clientCertificateConfigured:n,clientKeyConfigured:r,onToggle:a,onServerNameChange:o,onClientCertificateChange:i,onClientKeyChange:s,onClientCertificateReset:l,onClientKeyReset:c,tooltips:u,readOnly:d})=>{var p,h,g;const m=O();return b.createElement(N,{enabled:e,label:"TLS Client Authentication",tooltipText:"Validate using TLS client authentication, in which the server authenticates the client",onToggle:e=>a(e),readOnly:d},b.createElement(y.InlineField,{label:"ServerName",labelWidth:24,tooltip:null!=(p=null==u?void 0:u.serverNameLabel)?p:"A Servername is used to verify the hostname on the returned certificate",required:!0,htmlFor:"client-auth-servername-input",interactive:!0,grow:!0,className:m.inlineFieldNoMarginRight,disabled:d},b.createElement(y.Input,{id:"client-auth-servername-input",placeholder:"domain.example.com",value:t,onChange:e=>o(e.currentTarget.value),required:!0})),b.createElement(y.InlineField,{label:"Client Certificate",labelWidth:24,tooltip:null!=(h=null==u?void 0:u.certificateLabel)?h:"The client certificate can be generated from a Certificate Authority or be self-signed",required:!0,htmlFor:"client-auth-client-certificate-input",interactive:!0,grow:!0,className:(0,f.cx)(m.inlineFieldNoMarginRight,m.inlineFieldWithSecret),disabled:d},b.createElement(y.SecretTextArea,{id:"client-auth-client-certificate-input",isConfigured:n,onChange:e=>i(e.currentTarget.value),onReset:d?()=>{}:l,placeholder:"Begins with --- BEGIN CERTIFICATE ---",rows:6,required:!0})),b.createElement(y.InlineField,{label:"Client Key",labelWidth:24,tooltip:null!=(g=null==u?void 0:u.keyLabel)?g:"The client key can be generated from a Certificate Authority or be self-signed",required:!0,htmlFor:"client-auth-client-key-input",interactive:!0,grow:!0,className:(0,f.cx)(m.inlineFieldNoMarginRight,m.inlineFieldWithSecret),disabled:d},b.createElement(y.SecretTextArea,{id:"client-auth-client-key-input",isConfigured:r,onChange:e=>s(e.currentTarget.value),onReset:d?()=>{}:c,placeholder:"Begins with --- RSA PRIVATE KEY CERTIFICATE ---",rows:6,required:!0})))},D=({enabled:e,onToggle:t,readOnly:n})=>b.createElement(N,{enabled:e,label:"Skip TLS certificate validation",tooltipText:"Skipping TLS certificate validation is not recommended unless absolutely necessary or for testing",onToggle:e=>t(e),readOnly:n}),k=({selfSignedCertificate:e,TLSClientAuth:t,skipTLSVerification:n,readOnly:r})=>{const{spacing:a}=(0,y.useTheme2)(),o={container:(0,f.css)({marginTop:a(3)})};return b.createElement(j,{className:o.container,title:"TLS settings",description:"Additional security measures that can be applied on top of authentication"},b.createElement(P,{...e,readOnly:r}),b.createElement(F,{...t,readOnly:r}),b.createElement(D,{...n,readOnly:r}))},L=({header:e,onChange:t,onBlur:n,onDelete:r,readOnly:a})=>{const{spacing:o}=(0,y.useTheme2)(),i=O(),s={container:(0,f.css)({alignItems:"center"}),input:(0,f.css)({minWidth:"100%"}),headerNameField:(0,f.css)({width:"40%",marginRight:0,paddingRight:o(1)}),headerValueField:(0,f.css)({width:"45%",marginRight:0}),removeHeaderBtn:(0,f.css)({margin:"0 0 3px 10px"})};return b.createElement(b.Fragment,null,b.createElement(y.InlineFieldRow,{className:s.container},b.createElement(y.InlineField,{label:"Header",labelWidth:9,grow:!0,className:s.headerNameField,htmlFor:`custom-header-${e.id}-name-input`,disabled:a},b.createElement(y.Input,{id:`custom-header-${e.id}-name-input`,placeholder:"X-Custom-Header",value:e.name,width:12,onChange:n=>t({...e,name:n.currentTarget.value}),onBlur:n,className:s.input})),b.createElement(y.InlineField,{label:"Value",labelWidth:9,grow:!0,className:(0,f.cx)(i.inlineFieldWithSecret,s.headerValueField),htmlFor:`custom-header-${e.id}-value-input`,disabled:a},b.createElement(y.SecretInput,{id:`custom-header-${e.id}-value-input`,isConfigured:e.configured,placeholder:"Header value",value:e.value,width:12,onChange:n=>t({...e,value:n.currentTarget.value}),onReset:a?()=>{}:()=>t({...e,configured:!1,value:""}),onBlur:n,className:s.input})),b.createElement(y.IconButton,{name:"trash-alt",tooltip:"Remove header",tooltipPlacement:"top",className:s.removeHeaderBtn,onClick:r,type:"button",disabled:a})))},I=({headers:e,onChange:t,readOnly:n})=>{const{spacing:r}=(0,y.useTheme2)(),[a,o]=(0,b.useState)(e.map((e=>({...e,id:R(),value:""}))));(0,b.useEffect)((()=>{o((t=>{let n=!1;const r=t.map((t=>{var r;const a=null==(r=e.find((e=>e.name===t.name)))?void 0:r.configured;return void 0!==a&&t.configured!==a?(n=!0,{...t,configured:a}):t}));return n?r:t}))}),[e]);const i=()=>{t(a.map((({name:e,value:t,configured:n})=>({name:e,value:t,configured:n}))))},s={container:(0,f.css)({marginTop:r(3)}),addHeaderButton:(0,f.css)({marginTop:r(1.5)})};return b.createElement("div",{className:s.container},b.createElement(j,{title:"HTTP headers",description:"Pass along additional context and metadata about the request/response",isCollapsible:!0,isInitiallyOpen:a.length>0},b.createElement("div",null,a.map((e=>b.createElement(L,{key:e.id,header:e,onChange:e=>((e,t)=>{o(a.map((n=>n.id===e?{...t}:n)))})(e.id,e),onDelete:()=>(e=>{const n=a.findIndex((t=>t.id===e));if(-1===n)return;const r=[...a];r.splice(n,1),o(r),t(r.map((({name:e,value:t,configured:n})=>({name:e,value:t,configured:n}))))})(e.id),onBlur:i,readOnly:n})))),b.createElement("div",{className:s.addHeaderButton},b.createElement(y.Button,{icon:"plus",variant:"secondary",fill:"outline",onClick:()=>{o([...a,{id:R(),name:"",value:"",configured:!1}])},disabled:n},0===a.length?"Add header":"Add another header"))))};function R(){return Math.random().toString(16).slice(2)}const M=({selectedMethod:e,mostCommonMethod:t,visibleMethods:n,defaultOptionsOverrides:r,customMethods:a,onAuthMethodSelect:o,basicAuth:i,TLS:s,customHeaders:l,readOnly:c=!1})=>{const u={container:(0,f.css)({maxWidth:578})};return b.createElement("div",{className:u.container},b.createElement(w,{title:"Authentication"},b.createElement(T,{selectedMethod:e,mostCommonMethod:t,customMethods:a,visibleMethods:n,defaultOptionsOverrides:r,onAuthMethodSelect:o,basicAuth:i,readOnly:c}),s&&b.createElement(k,{...s,readOnly:c}),l&&b.createElement(I,{...l,readOnly:c})))},B="httpHeaderName",_="httpHeaderValue";function W({config:e,onChange:t}){return{selectedMethod:q(e),onAuthMethodSelect:J(e,t),basicAuth:$(e,t),TLS:U(e,t),customHeaders:z(e,t),readOnly:e.readOnly}}function q(e){return e.basicAuth?S.BasicAuth:e.withCredentials?S.CrossSiteCredentials:e.jsonData.oauthPassThru?S.OAuthForward:S.NoAuth}function J(e,t){return n=>{t({...e,basicAuth:n===S.BasicAuth,withCredentials:n===S.CrossSiteCredentials,jsonData:{...e.jsonData,oauthPassThru:n===S.OAuthForward}})}}function $(e,t){return{user:e.basicAuthUser,passwordConfigured:e.secureJsonFields.basicAuthPassword,onUserChange:n=>t({...e,basicAuthUser:n}),onPasswordChange:n=>t({...e,secureJsonData:{...e.secureJsonData,basicAuthPassword:n}}),onPasswordReset:()=>t({...e,secureJsonData:{...e.secureJsonData,basicAuthPassword:""},secureJsonFields:{...e.secureJsonFields,basicAuthPassword:!1}})}}function U(e,t){var n,r,a;return{selfSignedCertificate:{enabled:Boolean(e.jsonData.tlsAuthWithCACert),certificateConfigured:!!(null==(n=e.secureJsonFields)?void 0:n.tlsCACert),onToggle:n=>t(n?{...e,jsonData:{...e.jsonData,tlsAuthWithCACert:n}}:{...e,jsonData:{...e.jsonData,tlsAuthWithCACert:n},secureJsonData:{...e.secureJsonData,tlsCACert:""},secureJsonFields:{...e.secureJsonFields,tlsCACert:!1}}),onCertificateChange:n=>t({...e,secureJsonData:{...e.secureJsonData,tlsCACert:n}}),onCertificateReset:()=>t({...e,secureJsonData:{...e.secureJsonData,tlsCACert:""},secureJsonFields:{...e.secureJsonFields,tlsCACert:!1}})},TLSClientAuth:{enabled:e.jsonData.tlsAuth,serverName:e.jsonData.serverName,clientCertificateConfigured:!!(null==(r=e.secureJsonFields)?void 0:r.tlsClientCert),clientKeyConfigured:!!(null==(a=e.secureJsonFields)?void 0:a.tlsClientKey),onToggle:n=>t(n?{...e,jsonData:{...e.jsonData,tlsAuth:n}}:{...e,jsonData:{...e.jsonData,tlsAuth:n,serverName:""},secureJsonData:{...e.secureJsonData,tlsClientCert:"",tlsClientKey:""},secureJsonFields:{...e.secureJsonFields,tlsClientCert:!1,tlsClientKey:!1}}),onServerNameChange:n=>t({...e,jsonData:{...e.jsonData,serverName:n}}),onClientCertificateChange:n=>t({...e,secureJsonData:{...e.secureJsonData,tlsClientCert:n}}),onClientCertificateReset:()=>t({...e,secureJsonData:{...e.secureJsonData,tlsClientCert:""},secureJsonFields:{...e.secureJsonFields,tlsClientCert:!1}}),onClientKeyChange:n=>t({...e,secureJsonData:{...e.secureJsonData,tlsClientKey:n}}),onClientKeyReset:()=>t({...e,secureJsonData:{...e.secureJsonData,tlsClientKey:""},secureJsonFields:{...e.secureJsonFields,tlsClientKey:!1}})},skipTLSVerification:{enabled:e.jsonData.tlsSkipVerify,onToggle:n=>t({...e,jsonData:{...e.jsonData,tlsSkipVerify:n}})}}}function z(e,t){return{headers:Object.keys(e.jsonData).filter((e=>e.startsWith(B))).sort().map((t=>{var n;const r=t.slice(14);return{name:e.jsonData[t],configured:null!=(n=e.secureJsonFields[`${_}${r}`])&&n}})),onChange:n=>{const r=Object.fromEntries(Object.entries(e.jsonData).filter((([e])=>!e.startsWith(B)))),a=Object.fromEntries(Object.entries(e.secureJsonData||{}).filter((([e])=>!e.startsWith(_)))),o=Object.fromEntries(Object.entries(e.secureJsonFields).filter((([e])=>!e.startsWith(_))));n.forEach(((e,t)=>{r[`${B}${t+1}`]=e.name,e.configured?o[`${_}${t+1}`]=!0:a[`${_}${t+1}`]=e.value})),t({...e,jsonData:r,secureJsonData:a,secureJsonFields:o})}}}const K=({config:e,onChange:t,className:n})=>{const r={container:(0,f.css)({maxWidth:578})};return b.createElement(j,{title:"Advanced HTTP settings",className:(0,f.cx)(r.container,n)},b.createElement(y.InlineField,{htmlFor:"advanced-http-cookies",label:"Allowed cookies",labelWidth:24,tooltip:"Grafana proxy deletes forwarded cookies by default. Specify cookies by name that should be forwarded to the data source.",disabled:e.readOnly,grow:!0},b.createElement(y.TagsInput,{id:"advanced-http-cookies",placeholder:"New cookie (hit enter to add)",tags:e.jsonData.keepCookies,onChange:n=>{t({...e,jsonData:{...e.jsonData,keepCookies:n}})}})),b.createElement(y.InlineField,{htmlFor:"advanced-http-timeout",label:"Timeout",labelWidth:24,tooltip:"HTTP request timeout in seconds",disabled:e.readOnly,grow:!0},b.createElement(y.Input,{id:"advanced-http-timeout",type:"number",min:0,placeholder:"Timeout in seconds","aria-label":"Timeout in seconds",value:e.jsonData.timeout,onChange:n=>{t({...e,jsonData:{...e.jsonData,timeout:parseInt(n.currentTarget.value,10)}})}})))};var V=u(531);function H(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function Q(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{},r=Object.keys(n);"function"==typeof Object.getOwnPropertySymbols&&(r=r.concat(Object.getOwnPropertySymbols(n).filter((function(e){return Object.getOwnPropertyDescriptor(n,e).enumerable})))),r.forEach((function(t){H(e,t,n[t])}))}return e}const G=e=>({container:(0,f.css)({marginBottom:e.spacing(2),maxWidth:"900px"})});var Y=u(241);const Z=function(e){(0,b.useEffect)(e,[])};const X=function(e){Z((function(){e()}))};function ee(e){const t=(0,y.useStyles2)(te,e);return(0,m.jsx)("div",{className:t.root,children:e.children})}const te=(e,t)=>{var n,r,a;return{root:(0,f.css)({display:"flex",flexDirection:null!==(n=t.direction)&&void 0!==n?n:"row",flexWrap:null===(r=t.wrap)||void 0===r||r?"wrap":void 0,alignItems:t.alignItems,gap:e.spacing(null!==(a=t.gap)&&void 0!==a?a:2),flexGrow:t.flexGrow})}};function ne(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function re(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{},r=Object.keys(n);"function"==typeof Object.getOwnPropertySymbols&&(r=r.concat(Object.getOwnPropertySymbols(n).filter((function(e){return Object.getOwnPropertyDescriptor(n,e).enumerable})))),r.forEach((function(t){ne(e,t,n[t])}))}return e}function ae(e,t){return t=null!=t?t:{},Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(t)):function(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,r)}return n}(Object(t)).forEach((function(n){Object.defineProperty(e,n,Object.getOwnPropertyDescriptor(t,n))})),e}const oe=({children:e,stackProps:t})=>{const n=(0,y.useStyles2)(ie);return(0,m.jsx)("div",{className:n.root,children:(0,m.jsx)(ee,ae(re({gap:2},t),{children:e}))})},ie=e=>({root:(0,f.css)({padding:e.spacing(1),backgroundColor:e.colors.background.secondary,borderRadius:e.shape.radius.default})}),se=({children:e})=>(0,m.jsx)(ee,{gap:.5,direction:"column",children:e});const le=function(e){var t=(0,b.useRef)(e);return t.current=e,t},ce={id:"parca",extensions:[".parca"],aliases:["parca"],mimetypes:[],def:{language:{ignoreCase:!1,defaultToken:"",tokenPostfix:".fireql",keywords:[],operators:[],symbols:/[=><!~?:&|+\-*\/^%]+/,escapes:/\\(?:[abfnrtv\\"']|x[0-9A-Fa-f]{1,4}|u[0-9A-Fa-f]{4}|U[0-9A-Fa-f]{8})/,digits:/\d+(_+\d+)*/,octaldigits:/[0-7]+(_+[0-7]+)*/,binarydigits:/[0-1]+(_+[0-1]+)*/,hexdigits:/[0-9a-fA-F]+(_+[0-9a-fA-F]+)*/,integersuffix:/(ll|LL|u|U|l|L)?(ll|LL|u|U|l|L)?/,floatsuffix:/[fFlL]?/,tokenizer:{root:[[/[a-z_]\w*(?=\s*(=|!=|=~|!~))/,"tag"],[/"([^"\\]|\\.)*$/,"string.invalid"],[/'([^'\\]|\\.)*$/,"string.invalid"],[/"/,"string","@string_double"],[/'/,"string","@string_single"],{include:"@whitespace"},[/[{}()\[\]]/,"@brackets"],[/[<>](?!@symbols)/,"@brackets"],[/@symbols/,{cases:{"@operators":"delimiter","@default":""}}],[/\d+/,"number"],[/\d*\d+[eE]([\-+]?\d+)?(@floatsuffix)/,"number.float"],[/\d*\.\d+([eE][\-+]?\d+)?(@floatsuffix)/,"number.float"],[/0[xX][0-9a-fA-F']*[0-9a-fA-F](@integersuffix)/,"number.hex"],[/0[0-7']*[0-7](@integersuffix)/,"number.octal"],[/0[bB][0-1']*[0-1](@integersuffix)/,"number.binary"],[/\d[\d']*\d(@integersuffix)/,"number"],[/\d(@integersuffix)/,"number"]],string_double:[[/[^\\"]+/,"string"],[/@escapes/,"string.escape"],[/\\./,"string.escape.invalid"],[/"/,"string","@pop"]],string_single:[[/[^\\']+/,"string"],[/@escapes/,"string.escape"],[/\\./,"string.escape.invalid"],[/'/,"string","@pop"]],clauses:[[/[^(,)]/,"tag"],[/\)/,"identifier","@pop"]],whitespace:[[/[ \t\r\n]+/,"white"]]}},languageConfiguration:{wordPattern:/(-?\d*\.\d\w*)|([^`~!#%^&*()\-=+\[{\]}\\|;:'",.<>\/?\s]+)/g,brackets:[["{","}"]],autoClosingPairs:[{open:"{",close:"}"},{open:'"',close:'"'},{open:"'",close:"'"}],surroundingPairs:[{open:"{",close:"}"},{open:'"',close:'"'},{open:"'",close:"'"}],folding:{}}}};function ue(e,t,n,r,a,o,i){try{var s=e[o](i),l=s.value}catch(e){return void n(e)}s.done?t(l):Promise.resolve(l).then(r,a)}function de(e){return function(){var t=this,n=arguments;return new Promise((function(r,a){var o=e.apply(t,n);function i(e){ue(o,r,a,i,s,"next",e)}function s(e){ue(o,r,a,i,s,"throw",e)}i(void 0)}))}}function pe(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}class he{init(){return de((function*(){const e=yield this.datasource.getLabelNames();this.labels=e.reduce(((e,t)=>(e[t]=[],e)),{})})).call(this)}provideCompletionItems(e,t){var n;if((null===(n=this.editor.getModel())||void 0===n?void 0:n.id)!==e.id)return{suggestions:[]};const{range:r,offset:a}=function(e,t,n){const r=t.getWordAtPosition(n),a=null!=r?e.Range.lift({startLineNumber:n.lineNumber,endLineNumber:n.lineNumber,startColumn:r.startColumn,endColumn:r.endColumn}):e.Range.fromPositions(n),o={column:n.column,lineNumber:n.lineNumber},i=t.getOffsetAt(o);return{offset:i,range:a}}(this.monaco,e,t),o=function(e,t){if(""===e)return{type:"EMPTY"};const n=e.matchAll(be),r=Array.from(n).reduce(((e,t)=>{const[n,r,a]=t[1];return e.push({name:r,value:a}),e}),[]),a=e.substring(0,t).match(ye);if(a)return{type:"IN_LABEL_VALUE",labelName:a[1],betweenQuotes:!!a[2],otherLabels:r};const o=e.substring(0,t).match(ve);if(o)return{type:"IN_LABEL_NAME",otherLabels:r};return{type:"UNKNOWN"}}(e.getValue(),a);return this.getCompletions(o).then((e=>{const t=e.length.toString().length;return{suggestions:e.map(((e,n)=>({kind:ge(e.type,this.monaco),label:e.label,insertText:e.insertText,sortText:n.toString().padStart(t,"0"),range:r})))}}))}getCompletions(e){return de((function*(){if(!Object.keys(this.labels).length)return[];switch(e.type){case"UNKNOWN":return[];case"EMPTY":return Object.keys(this.labels).map((e=>({label:e,insertText:`{${e}="`,type:"LABEL_NAME"})));case"IN_LABEL_NAME":return Object.keys(this.labels).map((e=>({label:e,insertText:e,type:"LABEL_NAME"})));case"IN_LABEL_VALUE":let t=[];return this.labels[e.labelName].length?t=this.labels[e.labelName]:(t=yield this.datasource.getLabelValues(e.labelName),this.labels[e.labelName]=t),t.map((t=>({label:t,insertText:e.betweenQuotes?t:`"${t}"`,type:"LABEL_VALUE"})));default:throw new Error(`Unexpected situation ${e}`)}})).call(this)}constructor(e,t,n){pe(this,"datasource",void 0),pe(this,"monaco",void 0),pe(this,"editor",void 0),pe(this,"triggerCharacters",void 0),pe(this,"labels",void 0),this.datasource=e,this.monaco=t,this.editor=n,this.triggerCharacters=["{",",","[","(","=","~"," ",'"'],this.labels={}}}function ge(e,t){switch(e){case"LABEL_NAME":return t.languages.CompletionItemKind.Enum;case"LABEL_VALUE":return t.languages.CompletionItemKind.EnumMember;default:throw new Error(`Unexpected CompletionType: ${e}`)}}const me=/[a-zA-Z_][a-zA-Z0-9_]*/,fe=/[^"]*/,be=new RegExp(`(${me.source})="(${fe.source})"`,"g"),ye=new RegExp(`(${me.source})=("?)${fe.source}$`),ve=new RegExp(/[{,]\s*[a-zA-Z0-9_]*$/);function Ce(e,t,n,r,a,o,i){try{var s=e[o](i),l=s.value}catch(e){return void n(e)}s.done?t(l):Promise.resolve(l).then(r,a)}function we(e){const t=function(e){const t=(0,b.useRef)(null);return(0,b.useEffect)((()=>()=>{var e;null===(e=t.current)||void 0===e||e.call(t)}),[]),(n,r)=>{return(a=function*(){const a=new he(e,r,n);yield a.init();const{dispose:o}=r.languages.registerCompletionItemProvider(Ee,a);t.current=o},function(){var e=this,t=arguments;return new Promise((function(n,r){var o=a.apply(e,t);function i(e){Ce(o,n,r,i,s,"next",e)}function s(e){Ce(o,n,r,i,s,"throw",e)}i(void 0)}))})();var a}}(e.datasource),n=(0,y.useStyles2)(Se),r=le(e.onRunQuery),a=(0,b.useRef)(null);return(0,m.jsx)("div",{className:n.wrapper,ref:a,children:(0,m.jsx)(y.CodeEditor,{value:e.value,language:Ee,onBlur:e.onChange,containerStyles:n.queryField,monacoOptions:{folding:!1,fontSize:14,lineNumbers:"off",overviewRulerLanes:0,renderLineHighlight:"none",scrollbar:{vertical:"hidden",verticalScrollbarSize:8,horizontal:"hidden",horizontalScrollbarSize:0},scrollBeyondLastLine:!1,wordWrap:"on",padding:{top:5,bottom:6}},onBeforeEditorMount:je,onEditorDidMount:(e,n)=>{t(e,n);const o=()=>{const t=a.current;if(null!==t){const n=e.getContentHeight();t.style.height=`${n+xe}px`,t.style.width="100%";const r=t.clientWidth;e.layout({width:r,height:n})}};e.onDidContentSizeChange(o),o(),e.addCommand(n.KeyMod.Shift|n.KeyCode.Enter,(()=>{r.current(e.getValue())}))}})})}const xe=2;let Oe=!1;const Ee="parca";function je(e){if(!1===Oe){Oe=!0;const{aliases:t,extensions:n,mimetypes:r,def:a}=ce;e.languages.register({id:Ee,aliases:t,extensions:n,mimetypes:r}),e.languages.setMonarchTokensProvider(Ee,a.language),e.languages.setLanguageConfiguration(Ee,a.languageConfiguration)}}const Se=e=>({queryField:(0,f.css)({flex:1,width:"100px"}),wrapper:(0,f.css)({display:"flex",flex:1,border:"1px solid rgba(36, 41, 46, 0.3)",borderRadius:e.shape.radius.default})});var Ae=function(e,t){return"boolean"==typeof t?t:!e};const Te=function(e){return(0,b.useReducer)(Ae,e)},Ne=[{value:"metrics",label:"Metric",description:"Return aggregated metrics"},{value:"profile",label:"Profile",description:"Return profile"},{value:"both",label:"Both",description:"Return both metric and profile data"}];function Pe({query:e,onQueryTypeChange:t,app:n}){const[r,a]=Te(!1),o=(0,y.useStyles2)(Fe),i=function(e){return e===g.CoreApp.Explore?Ne:Ne.filter((e=>"both"!==e.value))}(n),s=(0,y.useStyles2)(y.clearButtonStyles);return(0,m.jsxs)(ee,{gap:0,direction:"column",children:[(0,m.jsxs)(y.Button,{className:(0,f.cx)(o.header,s),onClick:a,title:"Click to edit options",children:[(0,m.jsx)("div",{className:o.toggle,children:(0,m.jsx)(y.Icon,{name:r?"angle-down":"angle-right"})}),(0,m.jsx)("h6",{className:o.title,children:"Options"}),!r&&(0,m.jsx)("div",{className:o.description,children:(0,m.jsxs)("span",{children:["Type: ",e.queryType]})})]}),r&&(0,m.jsx)("div",{className:o.body,children:(0,m.jsx)(y.Field,{label:"Query Type",children:(0,m.jsx)(y.RadioButtonGroup,{options:i,value:e.queryType,onChange:t})})})]})}const Fe=e=>({switchLabel:(0,f.css)({color:e.colors.text.secondary,cursor:"pointer",fontSize:e.typography.bodySmall.fontSize,"&:hover":{color:e.colors.text.primary}}),header:(0,f.css)({display:"flex",cursor:"pointer",alignItems:"baseline",color:e.colors.text.primary,"&:hover":{background:e.colors.emphasize(e.colors.background.primary,.03)}}),title:(0,f.css)({flexGrow:1,overflow:"hidden",fontSize:e.typography.bodySmall.fontSize,fontWeight:e.typography.fontWeightMedium,margin:0}),description:(0,f.css)({color:e.colors.text.secondary,fontSize:e.typography.bodySmall.fontSize,paddingLeft:e.spacing(2),gap:e.spacing(2),display:"flex"}),body:(0,f.css)({display:"flex",paddingTop:e.spacing(2),gap:e.spacing(2),flexWrap:"wrap"}),toggle:(0,f.css)({color:e.colors.text.secondary,marginRight:`${e.spacing(1)}`})});function De(e,t,n,r,a,o,i){try{var s=e[o](i),l=s.value}catch(e){return void n(e)}s.done?t(l):Promise.resolve(l).then(r,a)}function ke(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function Le(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{},r=Object.keys(n);"function"==typeof Object.getOwnPropertySymbols&&(r=r.concat(Object.getOwnPropertySymbols(n).filter((function(e){return Object.getOwnPropertyDescriptor(n,e).enumerable})))),r.forEach((function(t){ke(e,t,n[t])}))}return e}function Ie(e,t){return t=null!=t?t:{},Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(t)):function(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,r)}return n}(Object(t)).forEach((function(n){Object.defineProperty(e,n,Object.getOwnPropertyDescriptor(t,n))})),e}const Re=Ie(Le({},{labelSelector:"{}"}),{queryType:"both"});var Me=u(269);function Be(e,t,n,r,a,o,i){try{var s=e[o](i),l=s.value}catch(e){return void n(e)}s.done?t(l):Promise.resolve(l).then(r,a)}function _e(e){return function(){var t=this,n=arguments;return new Promise((function(r,a){var o=e.apply(t,n);function i(e){Be(o,r,a,i,s,"next",e)}function s(e){Be(o,r,a,i,s,"throw",e)}i(void 0)}))}}function We(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function qe(e,t){return t=null!=t?t:{},Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(t)):function(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,r)}return n}(Object(t)).forEach((function(n){Object.defineProperty(e,n,Object.getOwnPropertyDescriptor(t,n))})),e}class Je extends V.DataSourceWithBackend{query(e){return e.targets.every((e=>e.profileTypeId))?super.query(e):(0,Me.of)({data:[]})}applyTemplateVariables(e,t){var n;return qe(function(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{},r=Object.keys(n);"function"==typeof Object.getOwnPropertySymbols&&(r=r.concat(Object.getOwnPropertySymbols(n).filter((function(e){return Object.getOwnPropertyDescriptor(n,e).enumerable})))),r.forEach((function(t){We(e,t,n[t])}))}return e}({},e),{labelSelector:this.templateSrv.replace(null!==(n=e.labelSelector)&&void 0!==n?n:"",t)})}getProfileTypes(){var e=this,t=()=>super.getResource;return _e((function*(){return yield t().call(e,"profileTypes")}))()}getLabelNames(){var e=this,t=()=>super.getResource;return _e((function*(){return yield t().call(e,"labelNames")}))()}getLabelValues(e){var t=this,n=()=>super.getResource;return _e((function*(){return yield n().call(t,"labelValues",{label:e})}))()}constructor(e,t=(0,V.getTemplateSrv)()){super(e),We(this,"templateSrv",void 0),this.templateSrv=t}}const $e=new g.DataSourcePlugin(Je).setConfigEditor((e=>{const{options:t,onOptionsChange:n}=e,r=(0,y.useStyles2)(G);return(0,m.jsxs)("div",{className:r.container,children:[(0,m.jsx)(v,{dataSourceName:"Parca",docsLink:"https://grafana.com/docs/grafana/latest/datasources/parca",hasRequiredFields:!1}),(0,m.jsx)(y.Divider,{spacing:4}),(0,m.jsx)(x,{config:t,onChange:n,urlPlaceholder:"http://localhost:7070"}),(0,m.jsx)(y.Divider,{spacing:4}),(0,m.jsx)(M,Q({},W({config:t,onChange:n}))),(0,m.jsx)(y.Divider,{spacing:4}),(0,m.jsx)(w,{title:"Additional settings",description:"Additional settings are optional settings that can be configured for more control over your data source.",isCollapsible:!0,isInitiallyOpen:!1,children:(0,m.jsxs)(y.Stack,{gap:5,direction:"column",children:[(0,m.jsx)(K,{config:t,onChange:n}),V.config.secureSocksDSProxyEnabled&&(0,m.jsx)(y.SecureSocksProxySettings,{options:t,onOptionsChange:n})]})})]})})).setQueryEditor((function(e){const[t,n]=(0,b.useState)([]);X((()=>{return(t=function*(){const t=yield e.datasource.getProfileTypes();n(t)},function(){var e=this,n=arguments;return new Promise((function(r,a){var o=t.apply(e,n);function i(e){De(o,r,a,i,s,"next",e)}function s(e){De(o,r,a,i,s,"throw",e)}i(void 0)}))})();var t}));const r=(0,b.useMemo)((()=>{let e=new Map;for(let a of t){var n,r;e.has(a.name)||e.set(a.name,{label:a.name,value:a.ID,children:[]}),null===(r=e.get(a.name))||void 0===r||null===(n=r.children)||void 0===n||n.push({label:a.sample_type,value:a.ID})}return Array.from(e.values())}),[t]),a=(0,b.useMemo)((()=>{if(!t)return"Loading";const n=t.find((t=>t.ID===e.query.profileTypeId));return n?n.name+" - "+n.sample_type:"Select a profile type"}),[e.query.profileTypeId,t]);let o=function(e,t){let n=(0,Y.defaults)(e,Re);t!==g.CoreApp.Explore&&"both"===n.queryType&&(n.queryType="profile");return n}(e.query,e.app);return(0,m.jsxs)(se,{children:[(0,m.jsxs)(oe,{stackProps:{wrap:!1,gap:1},children:[(0,m.jsx)(y.ButtonCascader,{onChange:function(t,n){if(0===n.length)return;const r=n[n.length-1].value;if("string"!=typeof r)throw new Error("id is not string");e.onChange(Ie(Le({},e.query),{profileTypeId:r}))},options:r,buttonProps:{variant:"secondary"},children:a}),(0,m.jsx)(we,{value:o.labelSelector,onChange:function(t){e.onChange(Ie(Le({},e.query),{labelSelector:t}))},datasource:e.datasource,onRunQuery:function(t){e.onChange(Ie(Le({},e.query),{labelSelector:t})),e.onRunQuery()}})]}),(0,m.jsx)(oe,{children:(0,m.jsx)(Pe,{query:o,onQueryTypeChange:t=>{e.onChange(Ie(Le({},o),{queryType:t}))},app:e.app})})]})}));return d})())); //# sourceMappingURL=module.js.map
.
Edit
..
Edit
CHANGELOG.md
Edit
LICENSE
Edit
README.md
Edit
img
Edit
module.js
Edit
module.js.LICENSE.txt
Edit
module.js.map
Edit
plugin.json
Edit