From b762eff57f7ac59a0cac2dc58677ddf100cb6c6f Mon Sep 17 00:00:00 2001 From: Nitish Tiwari Date: Mon, 6 Mar 2023 20:51:13 +0530 Subject: [PATCH 1/2] Fix query response parsing --- README.md | 4 +++ dist/MANIFEST.txt | 18 +++++------ dist/module.js | 2 +- dist/module.js.map | 2 +- releases/parseable-datasource-1.0.2.zip | Bin 1025571 -> 1026229 bytes releases/parseable-datasource-1.0.2.zip.sha1 | 2 +- src/datasource.ts | 32 +++++++++++++++++-- 7 files changed, 46 insertions(+), 14 deletions(-) diff --git a/README.md b/README.md index bb73422..b051ef9 100644 --- a/README.md +++ b/README.md @@ -33,3 +33,7 @@ This dashboard is aimed at visualizing the logs stored in the Parseable demo ser ![query editor](https://github.com/parseablehq/parseable-datasource/blob/main/src/img/query-editor.png?raw=true) ![log dashboard](https://github.com/parseablehq/parseable-datasource/blob/main/src/img/log-visualisation.png?raw=true) ![log text view](https://github.com/parseablehq/parseable-datasource/blob/main/src/img/log-view-text.png?raw=true) + +## Credits + +This plugin is developed in collaboration with our friends at [Technocube](https://www.technocube.co/). Thanks to them for their support and contribution. diff --git a/dist/MANIFEST.txt b/dist/MANIFEST.txt index 3bbe014..a50b36f 100644 --- a/dist/MANIFEST.txt +++ b/dist/MANIFEST.txt @@ -9,12 +9,12 @@ Hash: SHA512 "signedByOrgName": "parseable", "plugin": "parseable-parseable-datasource", "version": "1.0.2", - "time": 1678091287733, + "time": 1678115223502, "keyId": "7e4d0c6a708866e7", "files": { "LICENSE": "20b067f86de375aae6db0f283ab2e65de24d537733b89bd58432c101259d84cf", "CHANGELOG.md": "ba613d6f914b27dce9ace4d8c0cb074273c9eb6c536d8e7ac24c5ce6ae941fd0", - "module.js.map": "98ca780abf736bc47e7fbf2e5b3e534fca3acb7899bd6769f99fdff694477dc1", + "module.js.map": "7189edd1ce6145446698271b0a58dfc3f14444d1e3ffe3ea885e07ca1620af8a", "plugin.json": "9aeb4b12dc39425b139e9818c0b9f4c30314de6387bf5c8802deb7e36eed6a57", "README.md": "030a05e0d49d3746ef272d53c99936e3b98e3219a1cac96ca1df48ddee475934", "img/configuration.png": "c545a51bcc88809b2b4f87aac517a7d27ad61281344b0485c9826370b915b4d8", @@ -30,7 +30,7 @@ Hash: SHA512 "stories/assets/code-brackets.svg": "9ef6443ebd43351be1a6edbab492003b84f2e30c8f80207ec8c4138fa440f7f4", "stories/assets/flow.svg": "275142c67bb630246cbdfb0fc3493f17dd695544777ec8da852dbbe94976d323", "stories/assets/repo.svg": "fb4ece472009833a03b9f1fbc775f13a010d9432cae3844e8b05710ba028100d", - "module.js": "7fc14ff69e541ecc8b27ed7c6e118839c109639672dde85effbcac87372e5de7", + "module.js": "08c7db3293d45747bf8aa5c99a3b6bb9e6a12d48f358b4e034c60ec3f2381f7f", "dashboards/log-view.json": "7e6003d2b0b2f0913576908a3c76306b21bb8b53b4343eb379d986ee9e7cce34" } } @@ -38,10 +38,10 @@ Hash: SHA512 Version: OpenPGP.js v4.10.10 Comment: https://openpgpjs.org -wrkEARMKAAYFAmQFpBcAIQkQfk0ManCIZucWIQTzOyW2kQdOhGNlcPN+TQxq -cIhm501IAgkB1WA0MsZjjYjtnXs7zy1JWvJ4jz79wCupBo3Q4bW6oJu50ArI -uxDUCnCN8KxlGHFNiKSQeFlPdsgm9GNjKhgbf6MCCQFf7Cz902ksGnQSHlnA -KmXHsXRNJYsI165Y9pJA5jQUQfDf71br0nPoggUtHU2cKpJvUrE9amF2zoHn -hcEDcrB/Gw== -=JuLg +wrgEARMKAAYFAmQGAZcAIQkQfk0ManCIZucWIQTzOyW2kQdOhGNlcPN+TQxq +cIhm5/pMAgYiXLYcAOVRvh3i3kmjGzEjR3hYcLrSLy0rWsOK5Ou81eONwBi3 +xqgI8IR0lodEpL1t4VrbDjgd+NeMFAwJtOJ2XwIJAWXOTuk90ykstI05K2gx +jbHjejkgRJANMdD5FRisT8kM+s7KP1xW7rzzCWZo4iWPGs6KbbOZmjHzJ8Rs +cmyA1V10 +=NkTF -----END PGP SIGNATURE----- diff --git a/dist/module.js b/dist/module.js index 4b16872..961382b 100644 --- a/dist/module.js +++ b/dist/module.js @@ -1,2 +1,2 @@ -define(["@grafana/data","@grafana/runtime","rxjs","lodash","react","@grafana/ui"],((e,t,r,n,o,i)=>(()=>{"use strict";var a={305:t=>{t.exports=e},545:e=>{e.exports=t},388:e=>{e.exports=i},980:e=>{e.exports=n},650:e=>{e.exports=o},177:e=>{e.exports=r}},u={};function s(e){var t=u[e];if(void 0!==t)return t.exports;var r=u[e]={exports:{}};return a[e](r,r.exports,s),r.exports}s.n=e=>{var t=e&&e.__esModule?()=>e.default:()=>e;return s.d(t,{a:t}),t},s.d=(e,t)=>{for(var r in t)s.o(t,r)&&!s.o(e,r)&&Object.defineProperty(e,r,{enumerable:!0,get:t[r]})},s.o=(e,t)=>Object.prototype.hasOwnProperty.call(e,t),s.r=e=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})};var c={};return(()=>{s.r(c),s.d(c,{plugin:()=>ue});var e=s(305),t=s(545),r=s(177);function n(e){return"function"==typeof e}function o(e){return function(t){if(function(e){return n(null==e?void 0:e.lift)}(t))return t.lift((function(t){try{return e(t,this)}catch(e){this.error(e)}}));throw new TypeError("Unable to lift unknown Observable type")}}var i=function(e,t){return i=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(e,t){e.__proto__=t}||function(e,t){for(var r in t)Object.prototype.hasOwnProperty.call(t,r)&&(e[r]=t[r])},i(e,t)};function a(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Class extends value "+String(t)+" is not a constructor or null");function r(){this.constructor=e}i(e,t),e.prototype=null===t?Object.create(t):(r.prototype=t.prototype,new r)}function u(e,t){var r,n,o,i,a={label:0,sent:function(){if(1&o[0])throw o[1];return o[1]},trys:[],ops:[]};return i={next:u(0),throw:u(1),return:u(2)},"function"==typeof Symbol&&(i[Symbol.iterator]=function(){return this}),i;function u(i){return function(u){return function(i){if(r)throw new TypeError("Generator is already executing.");for(;a;)try{if(r=1,n&&(o=2&i[0]?n.return:i[0]?n.throw||((o=n.return)&&o.call(n),0):n.next)&&!(o=o.call(n,i[1])).done)return o;switch(n=0,o&&(i=[2&i[0],o.value]),i[0]){case 0:case 1:o=i;break;case 4:return a.label++,{value:i[1],done:!1};case 5:a.label++,n=i[1],i=[0];continue;case 7:i=a.ops.pop(),a.trys.pop();continue;default:if(!((o=(o=a.trys).length>0&&o[o.length-1])||6!==i[0]&&2!==i[0])){a=0;continue}if(3===i[0]&&(!o||i[1]>o[0]&&i[1]=e.length&&(e=void 0),{value:e&&e[n++],done:!e}}};throw new TypeError(t?"Object is not iterable.":"Symbol.iterator is not defined.")}function f(e,t){var r="function"==typeof Symbol&&e[Symbol.iterator];if(!r)return e;var n,o,i=r.call(e),a=[];try{for(;(void 0===t||t-- >0)&&!(n=i.next()).done;)a.push(n.value)}catch(e){o={error:e}}finally{try{n&&!n.done&&(r=i.return)&&r.call(i)}finally{if(o)throw o.error}}return a}function p(e,t,r){if(r||2===arguments.length)for(var n,o=0,i=t.length;o1||u(e,t)}))})}function u(e,t){try{(r=o[e](t)).value instanceof h?Promise.resolve(r.value.v).then(s,c):l(i[0][2],r)}catch(e){l(i[0][3],e)}var r}function s(e){u("next",e)}function c(e){u("throw",e)}function l(e,t){e(t),i.shift(),i.length&&u(i[0][0],i[0][1])}}Object.create,Object.create;var v,y=((v=function(e){var t;t=this,Error.call(t),t.stack=(new Error).stack,this.message=e?e.length+" errors occurred during unsubscription:\n"+e.map((function(e,t){return t+1+") "+e.toString()})).join("\n "):"",this.name="UnsubscriptionError",this.errors=e}).prototype=Object.create(Error.prototype),v.prototype.constructor=v,v);function b(e,t){if(e){var r=e.indexOf(t);0<=r&&e.splice(r,1)}}var m=function(){function e(e){this.initialTeardown=e,this.closed=!1,this._parentage=null,this._finalizers=null}var t;return e.prototype.unsubscribe=function(){var e,t,r,o,i;if(!this.closed){this.closed=!0;var a=this._parentage;if(a)if(this._parentage=null,Array.isArray(a))try{for(var u=l(a),s=u.next();!s.done;s=u.next())s.value.remove(this)}catch(t){e={error:t}}finally{try{s&&!s.done&&(t=u.return)&&t.call(u)}finally{if(e)throw e.error}}else a.remove(this);var c=this.initialTeardown;if(n(c))try{c()}catch(e){i=e instanceof y?e.errors:[e]}var h=this._finalizers;if(h){this._finalizers=null;try{for(var d=l(h),v=d.next();!v.done;v=d.next()){var b=v.value;try{g(b)}catch(e){i=null!=i?i:[],e instanceof y?i=p(p([],f(i)),f(e.errors)):i.push(e)}}}catch(e){r={error:e}}finally{try{v&&!v.done&&(o=d.return)&&o.call(d)}finally{if(r)throw r.error}}}if(i)throw new y(i)}},e.prototype.add=function(t){var r;if(t&&t!==this)if(this.closed)g(t);else{if(t instanceof e){if(t.closed||t._hasParent(this))return;t._addParent(this)}(this._finalizers=null!==(r=this._finalizers)&&void 0!==r?r:[]).push(t)}},e.prototype._hasParent=function(e){var t=this._parentage;return t===e||Array.isArray(t)&&t.includes(e)},e.prototype._addParent=function(e){var t=this._parentage;this._parentage=Array.isArray(t)?(t.push(e),t):t?[t,e]:e},e.prototype._removeParent=function(e){var t=this._parentage;t===e?this._parentage=null:Array.isArray(t)&&b(t,e)},e.prototype.remove=function(t){var r=this._finalizers;r&&b(r,t),t instanceof e&&t._removeParent(this)},e.EMPTY=((t=new e).closed=!0,t),e}();function w(e){return e instanceof m||e&&"closed"in e&&n(e.remove)&&n(e.add)&&n(e.unsubscribe)}function g(e){n(e)?e():e.unsubscribe()}m.EMPTY;var S=null,x=null,O=void 0,T=!1,_=!1,E={setTimeout:function(e,t){for(var r=[],n=2;n!e.hide)),0===t.targets.length)return Promise.resolve({data:[]});const{range:o}=t;if(!o)return Promise.resolve({data:[]});const i=o.from,a=o.to,u=t.targets.map((t=>{const o={query:t.queryText,startTime:i.toISOString(),endTime:a.toISOString(),send_null:!0};return(0,r.lastValueFrom)(n.doFetch({url:n.url+"/api/v1/query",data:o,method:"POST"}).pipe(Q((t=>(0,e.toDataFrame)(t.data))),J((e=>(0,r.of)({data:[]})))))}));return{data:yield Promise.all(u)}}))()}doFetch(e){return e.withCredentials=this.withCredentials,e.headers=this.headers,(0,t.getBackendSrv)().fetch(e)}listStreams(){var e=this;return Z((function*(){return(0,r.lastValueFrom)(e.doFetch({url:e.url+"/api/v1/logstream",method:"GET"}).pipe(Q((e=>(0,K.isArray)(e.data)?e.data:[])),J((e=>(0,r.of)([])))))}))()}streamStats(e){var t=this;return Z((function*(){return e?(0,r.lastValueFrom)(t.doFetch({url:t.url+"/api/v1/logstream/"+e.value+"/stats",method:"GET"}).pipe(Q((e=>"object"!=typeof e.data||(0,K.isNull)(e.data)?{}:e.data)),J((e=>(0,r.of)({status:"error",message:e.statusText}))))):{}}))()}streamSchema(e){var t=this;return Z((function*(){return e?(0,r.lastValueFrom)(t.doFetch({url:t.url+"/api/v1/logstream/"+e.value+"/schema",method:"GET"}).pipe(Q((e=>"object"!=typeof e.data||(0,K.isNull)(e.data)?{}:e.data)),J((e=>(0,r.of)({status:"error",message:e.statusText}))))):{fields:[]}}))()}testDatasource(){var e=this;return Z((function*(){const t="Parseable server is not reachable";try{const n=yield(0,r.lastValueFrom)(e.doFetch({url:e.url+"/api/v1/readiness",method:"GET"}).pipe(Q((e=>e))));return 200===n.status?{status:"success",message:"Parseable server is reachable",title:"Success"}:{message:n.statusText?n.statusText:t,status:"error",title:"Error"}}catch(e){var n,o;if("string"==typeof e)return{status:"error",message:e};let r=e;var i;let a=null!==(i=r.statusText)&&void 0!==i?i:t;return void 0!==(null===(n=r.data)||void 0===n||null===(o=n.error)||void 0===o?void 0:o.code)&&(a+=`: ${r.data.error.code}. ${r.data.error.message}`),{status:"error",message:a,title:"Error"}}}))()}constructor(e){var t,r;super(e),this.url=void 0===e.url?"":e.url,this.withCredentials=void 0!==e.withCredentials,this.defaultEditorMode=null!==(r=null===(t=e.jsonData)||void 0===t?void 0:t.defaultEditorMode)&&void 0!==r?r:"code"}}var te=s(650),re=s.n(te),ne=s(388);class oe extends te.PureComponent{render(){const{onOptionsChange:e,options:t}=this.props;return re().createElement("div",{className:"gf-form-group"},re().createElement(ne.DataSourceHttpSettings,{defaultUrl:"https://demo.parseable.io",dataSourceConfig:t,showAccessOptions:!0,onChange:e}))}}function ie(e,t,r){return t in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}const{FormField:ae}=ne.LegacyForms,ue=new e.DataSourcePlugin(ee).setConfigEditor(oe).setQueryEditor((({datasource:e,onChange:t,onRunQuery:r,query:n})=>{const{queryText:o}=n,i=re().useCallback((()=>e.listStreams().then((e=>e.map((e=>({label:e.name,value:e.name})))),(e=>{throw new Error(e.statusText)}))),[e]),[a,u]=(0,te.useState)(),[s="",c]=re().useState(),[l="",f]=re().useState(),[p="",h]=re().useState(),[d="",v]=re().useState(),[y="",b]=re().useState(),[m="",w]=re().useState(),g=re().useCallback((t=>t?e.streamSchema(t).then((e=>{if(e.fields){const t=e.fields.map((e=>e.name)),r=t.join(", ");return c(r),t}return s}),(e=>{throw new Error(e.statusText)})):""),[e,s]),S=re().useCallback((t=>t?e.streamStats(t).then((e=>{if(e.ingestion){var t;const r=e.ingestion.count,n=e.ingestion.size,o=null===(t=e.storage)||void 0===t?void 0:t.size,i=e.stream,a=e.time;return h(n),v(o),b(i),f(r),w(a),r}return l}),(e=>{throw new Error(e.statusText)})):""),[e,l]);return re().useEffect((()=>{const e=setTimeout((()=>{r()}),2e3);return()=>clearTimeout(e)}),[r,o]),re().useEffect((()=>{g(a)}),[g,a]),re().useEffect((()=>{S(a)}),[S,a]),re().createElement(re().Fragment,null,re().createElement(ne.InlineFieldRow,null,re().createElement(ne.InlineField,null,re().createElement(ne.Label,null,"Select a log stream:")),re().createElement(ne.InlineField,null,re().createElement(ne.AsyncSelect,{loadOptions:i,defaultOptions:!0,value:a,onChange:e=>{u(e)}}))),re().createElement(ne.InlineFieldRow,null,re().createElement(ne.InlineField,null,re().createElement(ne.SeriesTable,{series:[{color:"#299c46",isActive:!0,label:"Stream name",value:y},{color:"#299c46",isActive:!1,label:"Column names",value:s},{color:"#299c46",isActive:!1,label:"Total ingested event count",value:l},{color:"#299c46",isActive:!1,label:"Total ingested json size",value:p},{color:"#299c46",isActive:!1,label:"Total stored data size",value:d}],timestamp:m}))),re().createElement("br",null),re().createElement(ae,{labelWidth:12,inputWidth:100,value:o||"",onChange:e=>{var r,o;t((r=function(e){for(var t=1;t(()=>{"use strict";var a={305:t=>{t.exports=e},545:e=>{e.exports=t},388:e=>{e.exports=i},980:e=>{e.exports=n},650:e=>{e.exports=o},177:e=>{e.exports=r}},u={};function s(e){var t=u[e];if(void 0!==t)return t.exports;var r=u[e]={exports:{}};return a[e](r,r.exports,s),r.exports}s.n=e=>{var t=e&&e.__esModule?()=>e.default:()=>e;return s.d(t,{a:t}),t},s.d=(e,t)=>{for(var r in t)s.o(t,r)&&!s.o(e,r)&&Object.defineProperty(e,r,{enumerable:!0,get:t[r]})},s.o=(e,t)=>Object.prototype.hasOwnProperty.call(e,t),s.r=e=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})};var c={};return(()=>{s.r(c),s.d(c,{plugin:()=>ue});var e=s(305),t=s(545),r=s(177);function n(e){return"function"==typeof e}function o(e){return function(t){if(function(e){return n(null==e?void 0:e.lift)}(t))return t.lift((function(t){try{return e(t,this)}catch(e){this.error(e)}}));throw new TypeError("Unable to lift unknown Observable type")}}var i=function(e,t){return i=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(e,t){e.__proto__=t}||function(e,t){for(var r in t)Object.prototype.hasOwnProperty.call(t,r)&&(e[r]=t[r])},i(e,t)};function a(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Class extends value "+String(t)+" is not a constructor or null");function r(){this.constructor=e}i(e,t),e.prototype=null===t?Object.create(t):(r.prototype=t.prototype,new r)}function u(e,t){var r,n,o,i,a={label:0,sent:function(){if(1&o[0])throw o[1];return o[1]},trys:[],ops:[]};return i={next:u(0),throw:u(1),return:u(2)},"function"==typeof Symbol&&(i[Symbol.iterator]=function(){return this}),i;function u(i){return function(u){return function(i){if(r)throw new TypeError("Generator is already executing.");for(;a;)try{if(r=1,n&&(o=2&i[0]?n.return:i[0]?n.throw||((o=n.return)&&o.call(n),0):n.next)&&!(o=o.call(n,i[1])).done)return o;switch(n=0,o&&(i=[2&i[0],o.value]),i[0]){case 0:case 1:o=i;break;case 4:return a.label++,{value:i[1],done:!1};case 5:a.label++,n=i[1],i=[0];continue;case 7:i=a.ops.pop(),a.trys.pop();continue;default:if(!((o=(o=a.trys).length>0&&o[o.length-1])||6!==i[0]&&2!==i[0])){a=0;continue}if(3===i[0]&&(!o||i[1]>o[0]&&i[1]=e.length&&(e=void 0),{value:e&&e[n++],done:!e}}};throw new TypeError(t?"Object is not iterable.":"Symbol.iterator is not defined.")}function f(e,t){var r="function"==typeof Symbol&&e[Symbol.iterator];if(!r)return e;var n,o,i=r.call(e),a=[];try{for(;(void 0===t||t-- >0)&&!(n=i.next()).done;)a.push(n.value)}catch(e){o={error:e}}finally{try{n&&!n.done&&(r=i.return)&&r.call(i)}finally{if(o)throw o.error}}return a}function p(e,t,r){if(r||2===arguments.length)for(var n,o=0,i=t.length;o1||u(e,t)}))})}function u(e,t){try{(r=o[e](t)).value instanceof h?Promise.resolve(r.value.v).then(s,c):l(i[0][2],r)}catch(e){l(i[0][3],e)}var r}function s(e){u("next",e)}function c(e){u("throw",e)}function l(e,t){e(t),i.shift(),i.length&&u(i[0][0],i[0][1])}}Object.create,Object.create;var v,y=((v=function(e){var t;t=this,Error.call(t),t.stack=(new Error).stack,this.message=e?e.length+" errors occurred during unsubscription:\n"+e.map((function(e,t){return t+1+") "+e.toString()})).join("\n "):"",this.name="UnsubscriptionError",this.errors=e}).prototype=Object.create(Error.prototype),v.prototype.constructor=v,v);function b(e,t){if(e){var r=e.indexOf(t);0<=r&&e.splice(r,1)}}var m=function(){function e(e){this.initialTeardown=e,this.closed=!1,this._parentage=null,this._finalizers=null}var t;return e.prototype.unsubscribe=function(){var e,t,r,o,i;if(!this.closed){this.closed=!0;var a=this._parentage;if(a)if(this._parentage=null,Array.isArray(a))try{for(var u=l(a),s=u.next();!s.done;s=u.next())s.value.remove(this)}catch(t){e={error:t}}finally{try{s&&!s.done&&(t=u.return)&&t.call(u)}finally{if(e)throw e.error}}else a.remove(this);var c=this.initialTeardown;if(n(c))try{c()}catch(e){i=e instanceof y?e.errors:[e]}var h=this._finalizers;if(h){this._finalizers=null;try{for(var d=l(h),v=d.next();!v.done;v=d.next()){var b=v.value;try{g(b)}catch(e){i=null!=i?i:[],e instanceof y?i=p(p([],f(i)),f(e.errors)):i.push(e)}}}catch(e){r={error:e}}finally{try{v&&!v.done&&(o=d.return)&&o.call(d)}finally{if(r)throw r.error}}}if(i)throw new y(i)}},e.prototype.add=function(t){var r;if(t&&t!==this)if(this.closed)g(t);else{if(t instanceof e){if(t.closed||t._hasParent(this))return;t._addParent(this)}(this._finalizers=null!==(r=this._finalizers)&&void 0!==r?r:[]).push(t)}},e.prototype._hasParent=function(e){var t=this._parentage;return t===e||Array.isArray(t)&&t.includes(e)},e.prototype._addParent=function(e){var t=this._parentage;this._parentage=Array.isArray(t)?(t.push(e),t):t?[t,e]:e},e.prototype._removeParent=function(e){var t=this._parentage;t===e?this._parentage=null:Array.isArray(t)&&b(t,e)},e.prototype.remove=function(t){var r=this._finalizers;r&&b(r,t),t instanceof e&&t._removeParent(this)},e.EMPTY=((t=new e).closed=!0,t),e}();function w(e){return e instanceof m||e&&"closed"in e&&n(e.remove)&&n(e.add)&&n(e.unsubscribe)}function g(e){n(e)?e():e.unsubscribe()}m.EMPTY;var S=null,x=null,T=void 0,O=!1,_=!1,E={setTimeout:function(e,t){for(var r=[],n=2;n!e.hide)),0===e.targets.length)return Promise.resolve({data:[]});const{range:n}=e;if(!n)return Promise.resolve({data:[]});const o=n.from,i=n.to,a=e.targets.map((e=>{const n={query:e.queryText,startTime:o.toISOString(),endTime:i.toISOString(),send_null:!0};return(0,r.lastValueFrom)(t.doFetch({url:t.url+"/api/v1/query",data:n,method:"POST"}).pipe(V((e=>t.arrayToDataFrame(e.data))),J((e=>(0,r.of)({data:[]})))))}));return{data:yield Promise.all(a)}}))()}arrayToDataFrame(t){let r=new e.MutableDataFrame;if(t.length>0){const n=Object.keys(t[0]).map((r=>({name:r,type:(0,e.guessFieldTypeFromValue)(t[0][r])})));for(const t of n)if("p_timestamp"===t.name.toLowerCase()){t.type=e.FieldType.time;break}r=new e.MutableDataFrame({fields:n})}return t.forEach((e=>{r.appendRow(Object.values(e))})),r}doFetch(e){return e.withCredentials=this.withCredentials,e.headers=this.headers,(0,t.getBackendSrv)().fetch(e)}listStreams(){var e=this;return Z((function*(){return(0,r.lastValueFrom)(e.doFetch({url:e.url+"/api/v1/logstream",method:"GET"}).pipe(V((e=>(0,K.isArray)(e.data)?e.data:[])),J((e=>(0,r.of)([])))))}))()}streamStats(e){var t=this;return Z((function*(){return e?(0,r.lastValueFrom)(t.doFetch({url:t.url+"/api/v1/logstream/"+e.value+"/stats",method:"GET"}).pipe(V((e=>"object"!=typeof e.data||(0,K.isNull)(e.data)?{}:e.data)),J((e=>(0,r.of)({status:"error",message:e.statusText}))))):{}}))()}streamSchema(e){var t=this;return Z((function*(){return e?(0,r.lastValueFrom)(t.doFetch({url:t.url+"/api/v1/logstream/"+e.value+"/schema",method:"GET"}).pipe(V((e=>"object"!=typeof e.data||(0,K.isNull)(e.data)?{}:e.data)),J((e=>(0,r.of)({status:"error",message:e.statusText}))))):{fields:[]}}))()}testDatasource(){var e=this;return Z((function*(){const t="Parseable server is not reachable";try{const n=yield(0,r.lastValueFrom)(e.doFetch({url:e.url+"/api/v1/readiness",method:"GET"}).pipe(V((e=>e))));return 200===n.status?{status:"success",message:"Parseable server is reachable",title:"Success"}:{message:n.statusText?n.statusText:t,status:"error",title:"Error"}}catch(e){var n,o;if("string"==typeof e)return{status:"error",message:e};let r=e;var i;let a=null!==(i=r.statusText)&&void 0!==i?i:t;return void 0!==(null===(n=r.data)||void 0===n||null===(o=n.error)||void 0===o?void 0:o.code)&&(a+=`: ${r.data.error.code}. ${r.data.error.message}`),{status:"error",message:a,title:"Error"}}}))()}constructor(e){var t,r;super(e),this.url=void 0===e.url?"":e.url,this.withCredentials=void 0!==e.withCredentials,this.defaultEditorMode=null!==(r=null===(t=e.jsonData)||void 0===t?void 0:t.defaultEditorMode)&&void 0!==r?r:"code"}}var te=s(650),re=s.n(te),ne=s(388);class oe extends te.PureComponent{render(){const{onOptionsChange:e,options:t}=this.props;return re().createElement("div",{className:"gf-form-group"},re().createElement(ne.DataSourceHttpSettings,{defaultUrl:"https://demo.parseable.io",dataSourceConfig:t,showAccessOptions:!0,onChange:e}))}}function ie(e,t,r){return t in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}const{FormField:ae}=ne.LegacyForms,ue=new e.DataSourcePlugin(ee).setConfigEditor(oe).setQueryEditor((({datasource:e,onChange:t,onRunQuery:r,query:n})=>{const{queryText:o}=n,i=re().useCallback((()=>e.listStreams().then((e=>e.map((e=>({label:e.name,value:e.name})))),(e=>{throw new Error(e.statusText)}))),[e]),[a,u]=(0,te.useState)(),[s="",c]=re().useState(),[l="",f]=re().useState(),[p="",h]=re().useState(),[d="",v]=re().useState(),[y="",b]=re().useState(),[m="",w]=re().useState(),g=re().useCallback((t=>t?e.streamSchema(t).then((e=>{if(e.fields){const t=e.fields.map((e=>e.name)),r=t.join(", ");return c(r),t}return s}),(e=>{throw new Error(e.statusText)})):""),[e,s]),S=re().useCallback((t=>t?e.streamStats(t).then((e=>{if(e.ingestion){var t;const r=e.ingestion.count,n=e.ingestion.size,o=null===(t=e.storage)||void 0===t?void 0:t.size,i=e.stream,a=e.time;return h(n),v(o),b(i),f(r),w(a),r}return l}),(e=>{throw new Error(e.statusText)})):""),[e,l]);return re().useEffect((()=>{const e=setTimeout((()=>{r()}),2e3);return()=>clearTimeout(e)}),[r,o]),re().useEffect((()=>{g(a)}),[g,a]),re().useEffect((()=>{S(a)}),[S,a]),re().createElement(re().Fragment,null,re().createElement(ne.InlineFieldRow,null,re().createElement(ne.InlineField,null,re().createElement(ne.Label,null,"Select a log stream:")),re().createElement(ne.InlineField,null,re().createElement(ne.AsyncSelect,{loadOptions:i,defaultOptions:!0,value:a,onChange:e=>{u(e)}}))),re().createElement(ne.InlineFieldRow,null,re().createElement(ne.InlineField,null,re().createElement(ne.SeriesTable,{series:[{color:"#299c46",isActive:!0,label:"Stream name",value:y},{color:"#299c46",isActive:!1,label:"Column names",value:s},{color:"#299c46",isActive:!1,label:"Total ingested event count",value:l},{color:"#299c46",isActive:!1,label:"Total ingested json size",value:p},{color:"#299c46",isActive:!1,label:"Total stored data size",value:d}],timestamp:m}))),re().createElement("br",null),re().createElement(ae,{labelWidth:12,inputWidth:100,value:o||"",onChange:e=>{var r,o;t((r=function(e){for(var t=1;t {\n\tvar getter = module && module.__esModule ?\n\t\t() => (module['default']) :\n\t\t() => (module);\n\t__webpack_require__.d(getter, { a: getter });\n\treturn getter;\n};","// define getter functions for harmony exports\n__webpack_require__.d = (exports, definition) => {\n\tfor(var key in definition) {\n\t\tif(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {\n\t\t\tObject.defineProperty(exports, key, { enumerable: true, get: definition[key] });\n\t\t}\n\t}\n};","__webpack_require__.o = (obj, prop) => (Object.prototype.hasOwnProperty.call(obj, prop))","// define __esModule on exports\n__webpack_require__.r = (exports) => {\n\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n\t}\n\tObject.defineProperty(exports, '__esModule', { value: true });\n};","export function isFunction(value) {\n return typeof value === 'function';\n}\n//# sourceMappingURL=isFunction.js.map","import { isFunction } from './isFunction';\nexport function hasLift(source) {\n return isFunction(source === null || source === void 0 ? void 0 : source.lift);\n}\nexport function operate(init) {\n return function (source) {\n if (hasLift(source)) {\n return source.lift(function (liftedSource) {\n try {\n return init(liftedSource, this);\n }\n catch (err) {\n this.error(err);\n }\n });\n }\n throw new TypeError('Unable to lift unknown Observable type');\n };\n}\n//# sourceMappingURL=lift.js.map","/******************************************************************************\r\nCopyright (c) Microsoft Corporation.\r\n\r\nPermission to use, copy, modify, and/or distribute this software for any\r\npurpose with or without fee is hereby granted.\r\n\r\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\r\nREGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\r\nAND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\r\nINDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\r\nLOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\r\nOTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\r\nPERFORMANCE OF THIS SOFTWARE.\r\n***************************************************************************** */\r\n/* global Reflect, Promise */\r\n\r\nvar extendStatics = function(d, b) {\r\n extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n};\r\n\r\nexport function __extends(d, b) {\r\n if (typeof b !== \"function\" && b !== null)\r\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n}\r\n\r\nexport var __assign = function() {\r\n __assign = Object.assign || function __assign(t) {\r\n for (var s, i = 1, n = arguments.length; i < n; i++) {\r\n s = arguments[i];\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\r\n }\r\n return t;\r\n }\r\n return __assign.apply(this, arguments);\r\n}\r\n\r\nexport function __rest(s, e) {\r\n var t = {};\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\r\n t[p] = s[p];\r\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\r\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\r\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\r\n t[p[i]] = s[p[i]];\r\n }\r\n return t;\r\n}\r\n\r\nexport function __decorate(decorators, target, key, desc) {\r\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\r\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\r\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\r\n return c > 3 && r && Object.defineProperty(target, key, r), r;\r\n}\r\n\r\nexport function __param(paramIndex, decorator) {\r\n return function (target, key) { decorator(target, key, paramIndex); }\r\n}\r\n\r\nexport function __metadata(metadataKey, metadataValue) {\r\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(metadataKey, metadataValue);\r\n}\r\n\r\nexport function __awaiter(thisArg, _arguments, P, generator) {\r\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\r\n return new (P || (P = Promise))(function (resolve, reject) {\r\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\r\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\r\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\r\n step((generator = generator.apply(thisArg, _arguments || [])).next());\r\n });\r\n}\r\n\r\nexport function __generator(thisArg, body) {\r\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\r\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\r\n function verb(n) { return function (v) { return step([n, v]); }; }\r\n function step(op) {\r\n if (f) throw new TypeError(\"Generator is already executing.\");\r\n while (_) try {\r\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\r\n if (y = 0, t) op = [op[0] & 2, t.value];\r\n switch (op[0]) {\r\n case 0: case 1: t = op; break;\r\n case 4: _.label++; return { value: op[1], done: false };\r\n case 5: _.label++; y = op[1]; op = [0]; continue;\r\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\r\n default:\r\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\r\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\r\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\r\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\r\n if (t[2]) _.ops.pop();\r\n _.trys.pop(); continue;\r\n }\r\n op = body.call(thisArg, _);\r\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\r\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\r\n }\r\n}\r\n\r\nexport var __createBinding = Object.create ? (function(o, m, k, k2) {\r\n if (k2 === undefined) k2 = k;\r\n var desc = Object.getOwnPropertyDescriptor(m, k);\r\n if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\r\n desc = { enumerable: true, get: function() { return m[k]; } };\r\n }\r\n Object.defineProperty(o, k2, desc);\r\n}) : (function(o, m, k, k2) {\r\n if (k2 === undefined) k2 = k;\r\n o[k2] = m[k];\r\n});\r\n\r\nexport function __exportStar(m, o) {\r\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(o, p)) __createBinding(o, m, p);\r\n}\r\n\r\nexport function __values(o) {\r\n var s = typeof Symbol === \"function\" && Symbol.iterator, m = s && o[s], i = 0;\r\n if (m) return m.call(o);\r\n if (o && typeof o.length === \"number\") return {\r\n next: function () {\r\n if (o && i >= o.length) o = void 0;\r\n return { value: o && o[i++], done: !o };\r\n }\r\n };\r\n throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\r\n}\r\n\r\nexport function __read(o, n) {\r\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\r\n if (!m) return o;\r\n var i = m.call(o), r, ar = [], e;\r\n try {\r\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\r\n }\r\n catch (error) { e = { error: error }; }\r\n finally {\r\n try {\r\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\r\n }\r\n finally { if (e) throw e.error; }\r\n }\r\n return ar;\r\n}\r\n\r\n/** @deprecated */\r\nexport function __spread() {\r\n for (var ar = [], i = 0; i < arguments.length; i++)\r\n ar = ar.concat(__read(arguments[i]));\r\n return ar;\r\n}\r\n\r\n/** @deprecated */\r\nexport function __spreadArrays() {\r\n for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;\r\n for (var r = Array(s), k = 0, i = 0; i < il; i++)\r\n for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)\r\n r[k] = a[j];\r\n return r;\r\n}\r\n\r\nexport function __spreadArray(to, from, pack) {\r\n if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {\r\n if (ar || !(i in from)) {\r\n if (!ar) ar = Array.prototype.slice.call(from, 0, i);\r\n ar[i] = from[i];\r\n }\r\n }\r\n return to.concat(ar || Array.prototype.slice.call(from));\r\n}\r\n\r\nexport function __await(v) {\r\n return this instanceof __await ? (this.v = v, this) : new __await(v);\r\n}\r\n\r\nexport function __asyncGenerator(thisArg, _arguments, generator) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var g = generator.apply(thisArg, _arguments || []), i, q = [];\r\n return i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i;\r\n function verb(n) { if (g[n]) i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; }\r\n function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } }\r\n function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); }\r\n function fulfill(value) { resume(\"next\", value); }\r\n function reject(value) { resume(\"throw\", value); }\r\n function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); }\r\n}\r\n\r\nexport function __asyncDelegator(o) {\r\n var i, p;\r\n return i = {}, verb(\"next\"), verb(\"throw\", function (e) { throw e; }), verb(\"return\"), i[Symbol.iterator] = function () { return this; }, i;\r\n function verb(n, f) { i[n] = o[n] ? function (v) { return (p = !p) ? { value: __await(o[n](v)), done: n === \"return\" } : f ? f(v) : v; } : f; }\r\n}\r\n\r\nexport function __asyncValues(o) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var m = o[Symbol.asyncIterator], i;\r\n return m ? m.call(o) : (o = typeof __values === \"function\" ? __values(o) : o[Symbol.iterator](), i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i);\r\n function verb(n) { i[n] = o[n] && function (v) { return new Promise(function (resolve, reject) { v = o[n](v), settle(resolve, reject, v.done, v.value); }); }; }\r\n function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); }\r\n}\r\n\r\nexport function __makeTemplateObject(cooked, raw) {\r\n if (Object.defineProperty) { Object.defineProperty(cooked, \"raw\", { value: raw }); } else { cooked.raw = raw; }\r\n return cooked;\r\n};\r\n\r\nvar __setModuleDefault = Object.create ? (function(o, v) {\r\n Object.defineProperty(o, \"default\", { enumerable: true, value: v });\r\n}) : function(o, v) {\r\n o[\"default\"] = v;\r\n};\r\n\r\nexport function __importStar(mod) {\r\n if (mod && mod.__esModule) return mod;\r\n var result = {};\r\n if (mod != null) for (var k in mod) if (k !== \"default\" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);\r\n __setModuleDefault(result, mod);\r\n return result;\r\n}\r\n\r\nexport function __importDefault(mod) {\r\n return (mod && mod.__esModule) ? mod : { default: mod };\r\n}\r\n\r\nexport function __classPrivateFieldGet(receiver, state, kind, f) {\r\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a getter\");\r\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot read private member from an object whose class did not declare it\");\r\n return kind === \"m\" ? f : kind === \"a\" ? f.call(receiver) : f ? f.value : state.get(receiver);\r\n}\r\n\r\nexport function __classPrivateFieldSet(receiver, state, value, kind, f) {\r\n if (kind === \"m\") throw new TypeError(\"Private method is not writable\");\r\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a setter\");\r\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot write private member to an object whose class did not declare it\");\r\n return (kind === \"a\" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;\r\n}\r\n\r\nexport function __classPrivateFieldIn(state, receiver) {\r\n if (receiver === null || (typeof receiver !== \"object\" && typeof receiver !== \"function\")) throw new TypeError(\"Cannot use 'in' operator on non-object\");\r\n return typeof state === \"function\" ? receiver === state : state.has(receiver);\r\n}\r\n","import { createErrorClass } from './createErrorClass';\nexport var UnsubscriptionError = createErrorClass(function (_super) {\n return function UnsubscriptionErrorImpl(errors) {\n _super(this);\n this.message = errors\n ? errors.length + \" errors occurred during unsubscription:\\n\" + errors.map(function (err, i) { return i + 1 + \") \" + err.toString(); }).join('\\n ')\n : '';\n this.name = 'UnsubscriptionError';\n this.errors = errors;\n };\n});\n//# sourceMappingURL=UnsubscriptionError.js.map","export function createErrorClass(createImpl) {\n var _super = function (instance) {\n Error.call(instance);\n instance.stack = new Error().stack;\n };\n var ctorFunc = createImpl(_super);\n ctorFunc.prototype = Object.create(Error.prototype);\n ctorFunc.prototype.constructor = ctorFunc;\n return ctorFunc;\n}\n//# sourceMappingURL=createErrorClass.js.map","export function arrRemove(arr, item) {\n if (arr) {\n var index = arr.indexOf(item);\n 0 <= index && arr.splice(index, 1);\n }\n}\n//# sourceMappingURL=arrRemove.js.map","import { __read, __spreadArray, __values } from \"tslib\";\nimport { isFunction } from './util/isFunction';\nimport { UnsubscriptionError } from './util/UnsubscriptionError';\nimport { arrRemove } from './util/arrRemove';\nvar Subscription = (function () {\n function Subscription(initialTeardown) {\n this.initialTeardown = initialTeardown;\n this.closed = false;\n this._parentage = null;\n this._finalizers = null;\n }\n Subscription.prototype.unsubscribe = function () {\n var e_1, _a, e_2, _b;\n var errors;\n if (!this.closed) {\n this.closed = true;\n var _parentage = this._parentage;\n if (_parentage) {\n this._parentage = null;\n if (Array.isArray(_parentage)) {\n try {\n for (var _parentage_1 = __values(_parentage), _parentage_1_1 = _parentage_1.next(); !_parentage_1_1.done; _parentage_1_1 = _parentage_1.next()) {\n var parent_1 = _parentage_1_1.value;\n parent_1.remove(this);\n }\n }\n catch (e_1_1) { e_1 = { error: e_1_1 }; }\n finally {\n try {\n if (_parentage_1_1 && !_parentage_1_1.done && (_a = _parentage_1.return)) _a.call(_parentage_1);\n }\n finally { if (e_1) throw e_1.error; }\n }\n }\n else {\n _parentage.remove(this);\n }\n }\n var initialFinalizer = this.initialTeardown;\n if (isFunction(initialFinalizer)) {\n try {\n initialFinalizer();\n }\n catch (e) {\n errors = e instanceof UnsubscriptionError ? e.errors : [e];\n }\n }\n var _finalizers = this._finalizers;\n if (_finalizers) {\n this._finalizers = null;\n try {\n for (var _finalizers_1 = __values(_finalizers), _finalizers_1_1 = _finalizers_1.next(); !_finalizers_1_1.done; _finalizers_1_1 = _finalizers_1.next()) {\n var finalizer = _finalizers_1_1.value;\n try {\n execFinalizer(finalizer);\n }\n catch (err) {\n errors = errors !== null && errors !== void 0 ? errors : [];\n if (err instanceof UnsubscriptionError) {\n errors = __spreadArray(__spreadArray([], __read(errors)), __read(err.errors));\n }\n else {\n errors.push(err);\n }\n }\n }\n }\n catch (e_2_1) { e_2 = { error: e_2_1 }; }\n finally {\n try {\n if (_finalizers_1_1 && !_finalizers_1_1.done && (_b = _finalizers_1.return)) _b.call(_finalizers_1);\n }\n finally { if (e_2) throw e_2.error; }\n }\n }\n if (errors) {\n throw new UnsubscriptionError(errors);\n }\n }\n };\n Subscription.prototype.add = function (teardown) {\n var _a;\n if (teardown && teardown !== this) {\n if (this.closed) {\n execFinalizer(teardown);\n }\n else {\n if (teardown instanceof Subscription) {\n if (teardown.closed || teardown._hasParent(this)) {\n return;\n }\n teardown._addParent(this);\n }\n (this._finalizers = (_a = this._finalizers) !== null && _a !== void 0 ? _a : []).push(teardown);\n }\n }\n };\n Subscription.prototype._hasParent = function (parent) {\n var _parentage = this._parentage;\n return _parentage === parent || (Array.isArray(_parentage) && _parentage.includes(parent));\n };\n Subscription.prototype._addParent = function (parent) {\n var _parentage = this._parentage;\n this._parentage = Array.isArray(_parentage) ? (_parentage.push(parent), _parentage) : _parentage ? [_parentage, parent] : parent;\n };\n Subscription.prototype._removeParent = function (parent) {\n var _parentage = this._parentage;\n if (_parentage === parent) {\n this._parentage = null;\n }\n else if (Array.isArray(_parentage)) {\n arrRemove(_parentage, parent);\n }\n };\n Subscription.prototype.remove = function (teardown) {\n var _finalizers = this._finalizers;\n _finalizers && arrRemove(_finalizers, teardown);\n if (teardown instanceof Subscription) {\n teardown._removeParent(this);\n }\n };\n Subscription.EMPTY = (function () {\n var empty = new Subscription();\n empty.closed = true;\n return empty;\n })();\n return Subscription;\n}());\nexport { Subscription };\nexport var EMPTY_SUBSCRIPTION = Subscription.EMPTY;\nexport function isSubscription(value) {\n return (value instanceof Subscription ||\n (value && 'closed' in value && isFunction(value.remove) && isFunction(value.add) && isFunction(value.unsubscribe)));\n}\nfunction execFinalizer(finalizer) {\n if (isFunction(finalizer)) {\n finalizer();\n }\n else {\n finalizer.unsubscribe();\n }\n}\n//# sourceMappingURL=Subscription.js.map","export var config = {\n onUnhandledError: null,\n onStoppedNotification: null,\n Promise: undefined,\n useDeprecatedSynchronousErrorHandling: false,\n useDeprecatedNextContext: false,\n};\n//# sourceMappingURL=config.js.map","import { __read, __spreadArray } from \"tslib\";\nexport var timeoutProvider = {\n setTimeout: function (handler, timeout) {\n var args = [];\n for (var _i = 2; _i < arguments.length; _i++) {\n args[_i - 2] = arguments[_i];\n }\n var delegate = timeoutProvider.delegate;\n if (delegate === null || delegate === void 0 ? void 0 : delegate.setTimeout) {\n return delegate.setTimeout.apply(delegate, __spreadArray([handler, timeout], __read(args)));\n }\n return setTimeout.apply(void 0, __spreadArray([handler, timeout], __read(args)));\n },\n clearTimeout: function (handle) {\n var delegate = timeoutProvider.delegate;\n return ((delegate === null || delegate === void 0 ? void 0 : delegate.clearTimeout) || clearTimeout)(handle);\n },\n delegate: undefined,\n};\n//# sourceMappingURL=timeoutProvider.js.map","import { config } from '../config';\nimport { timeoutProvider } from '../scheduler/timeoutProvider';\nexport function reportUnhandledError(err) {\n timeoutProvider.setTimeout(function () {\n var onUnhandledError = config.onUnhandledError;\n if (onUnhandledError) {\n onUnhandledError(err);\n }\n else {\n throw err;\n }\n });\n}\n//# sourceMappingURL=reportUnhandledError.js.map","export function noop() { }\n//# sourceMappingURL=noop.js.map","export var COMPLETE_NOTIFICATION = (function () { return createNotification('C', undefined, undefined); })();\nexport function errorNotification(error) {\n return createNotification('E', undefined, error);\n}\nexport function nextNotification(value) {\n return createNotification('N', value, undefined);\n}\nexport function createNotification(kind, value, error) {\n return {\n kind: kind,\n value: value,\n error: error,\n };\n}\n//# sourceMappingURL=NotificationFactories.js.map","import { config } from '../config';\nvar context = null;\nexport function errorContext(cb) {\n if (config.useDeprecatedSynchronousErrorHandling) {\n var isRoot = !context;\n if (isRoot) {\n context = { errorThrown: false, error: null };\n }\n cb();\n if (isRoot) {\n var _a = context, errorThrown = _a.errorThrown, error = _a.error;\n context = null;\n if (errorThrown) {\n throw error;\n }\n }\n }\n else {\n cb();\n }\n}\nexport function captureError(err) {\n if (config.useDeprecatedSynchronousErrorHandling && context) {\n context.errorThrown = true;\n context.error = err;\n }\n}\n//# sourceMappingURL=errorContext.js.map","import { __extends } from \"tslib\";\nimport { isFunction } from './util/isFunction';\nimport { isSubscription, Subscription } from './Subscription';\nimport { config } from './config';\nimport { reportUnhandledError } from './util/reportUnhandledError';\nimport { noop } from './util/noop';\nimport { nextNotification, errorNotification, COMPLETE_NOTIFICATION } from './NotificationFactories';\nimport { timeoutProvider } from './scheduler/timeoutProvider';\nimport { captureError } from './util/errorContext';\nvar Subscriber = (function (_super) {\n __extends(Subscriber, _super);\n function Subscriber(destination) {\n var _this = _super.call(this) || this;\n _this.isStopped = false;\n if (destination) {\n _this.destination = destination;\n if (isSubscription(destination)) {\n destination.add(_this);\n }\n }\n else {\n _this.destination = EMPTY_OBSERVER;\n }\n return _this;\n }\n Subscriber.create = function (next, error, complete) {\n return new SafeSubscriber(next, error, complete);\n };\n Subscriber.prototype.next = function (value) {\n if (this.isStopped) {\n handleStoppedNotification(nextNotification(value), this);\n }\n else {\n this._next(value);\n }\n };\n Subscriber.prototype.error = function (err) {\n if (this.isStopped) {\n handleStoppedNotification(errorNotification(err), this);\n }\n else {\n this.isStopped = true;\n this._error(err);\n }\n };\n Subscriber.prototype.complete = function () {\n if (this.isStopped) {\n handleStoppedNotification(COMPLETE_NOTIFICATION, this);\n }\n else {\n this.isStopped = true;\n this._complete();\n }\n };\n Subscriber.prototype.unsubscribe = function () {\n if (!this.closed) {\n this.isStopped = true;\n _super.prototype.unsubscribe.call(this);\n this.destination = null;\n }\n };\n Subscriber.prototype._next = function (value) {\n this.destination.next(value);\n };\n Subscriber.prototype._error = function (err) {\n try {\n this.destination.error(err);\n }\n finally {\n this.unsubscribe();\n }\n };\n Subscriber.prototype._complete = function () {\n try {\n this.destination.complete();\n }\n finally {\n this.unsubscribe();\n }\n };\n return Subscriber;\n}(Subscription));\nexport { Subscriber };\nvar _bind = Function.prototype.bind;\nfunction bind(fn, thisArg) {\n return _bind.call(fn, thisArg);\n}\nvar ConsumerObserver = (function () {\n function ConsumerObserver(partialObserver) {\n this.partialObserver = partialObserver;\n }\n ConsumerObserver.prototype.next = function (value) {\n var partialObserver = this.partialObserver;\n if (partialObserver.next) {\n try {\n partialObserver.next(value);\n }\n catch (error) {\n handleUnhandledError(error);\n }\n }\n };\n ConsumerObserver.prototype.error = function (err) {\n var partialObserver = this.partialObserver;\n if (partialObserver.error) {\n try {\n partialObserver.error(err);\n }\n catch (error) {\n handleUnhandledError(error);\n }\n }\n else {\n handleUnhandledError(err);\n }\n };\n ConsumerObserver.prototype.complete = function () {\n var partialObserver = this.partialObserver;\n if (partialObserver.complete) {\n try {\n partialObserver.complete();\n }\n catch (error) {\n handleUnhandledError(error);\n }\n }\n };\n return ConsumerObserver;\n}());\nvar SafeSubscriber = (function (_super) {\n __extends(SafeSubscriber, _super);\n function SafeSubscriber(observerOrNext, error, complete) {\n var _this = _super.call(this) || this;\n var partialObserver;\n if (isFunction(observerOrNext) || !observerOrNext) {\n partialObserver = {\n next: (observerOrNext !== null && observerOrNext !== void 0 ? observerOrNext : undefined),\n error: error !== null && error !== void 0 ? error : undefined,\n complete: complete !== null && complete !== void 0 ? complete : undefined,\n };\n }\n else {\n var context_1;\n if (_this && config.useDeprecatedNextContext) {\n context_1 = Object.create(observerOrNext);\n context_1.unsubscribe = function () { return _this.unsubscribe(); };\n partialObserver = {\n next: observerOrNext.next && bind(observerOrNext.next, context_1),\n error: observerOrNext.error && bind(observerOrNext.error, context_1),\n complete: observerOrNext.complete && bind(observerOrNext.complete, context_1),\n };\n }\n else {\n partialObserver = observerOrNext;\n }\n }\n _this.destination = new ConsumerObserver(partialObserver);\n return _this;\n }\n return SafeSubscriber;\n}(Subscriber));\nexport { SafeSubscriber };\nfunction handleUnhandledError(error) {\n if (config.useDeprecatedSynchronousErrorHandling) {\n captureError(error);\n }\n else {\n reportUnhandledError(error);\n }\n}\nfunction defaultErrorHandler(err) {\n throw err;\n}\nfunction handleStoppedNotification(notification, subscriber) {\n var onStoppedNotification = config.onStoppedNotification;\n onStoppedNotification && timeoutProvider.setTimeout(function () { return onStoppedNotification(notification, subscriber); });\n}\nexport var EMPTY_OBSERVER = {\n closed: true,\n next: noop,\n error: defaultErrorHandler,\n complete: noop,\n};\n//# sourceMappingURL=Subscriber.js.map","import { __extends } from \"tslib\";\nimport { Subscriber } from '../Subscriber';\nexport function createOperatorSubscriber(destination, onNext, onComplete, onError, onFinalize) {\n return new OperatorSubscriber(destination, onNext, onComplete, onError, onFinalize);\n}\nvar OperatorSubscriber = (function (_super) {\n __extends(OperatorSubscriber, _super);\n function OperatorSubscriber(destination, onNext, onComplete, onError, onFinalize, shouldUnsubscribe) {\n var _this = _super.call(this, destination) || this;\n _this.onFinalize = onFinalize;\n _this.shouldUnsubscribe = shouldUnsubscribe;\n _this._next = onNext\n ? function (value) {\n try {\n onNext(value);\n }\n catch (err) {\n destination.error(err);\n }\n }\n : _super.prototype._next;\n _this._error = onError\n ? function (err) {\n try {\n onError(err);\n }\n catch (err) {\n destination.error(err);\n }\n finally {\n this.unsubscribe();\n }\n }\n : _super.prototype._error;\n _this._complete = onComplete\n ? function () {\n try {\n onComplete();\n }\n catch (err) {\n destination.error(err);\n }\n finally {\n this.unsubscribe();\n }\n }\n : _super.prototype._complete;\n return _this;\n }\n OperatorSubscriber.prototype.unsubscribe = function () {\n var _a;\n if (!this.shouldUnsubscribe || this.shouldUnsubscribe()) {\n var closed_1 = this.closed;\n _super.prototype.unsubscribe.call(this);\n !closed_1 && ((_a = this.onFinalize) === null || _a === void 0 ? void 0 : _a.call(this));\n }\n };\n return OperatorSubscriber;\n}(Subscriber));\nexport { OperatorSubscriber };\n//# sourceMappingURL=OperatorSubscriber.js.map","import { operate } from '../util/lift';\nimport { createOperatorSubscriber } from './OperatorSubscriber';\nexport function map(project, thisArg) {\n return operate(function (source, subscriber) {\n var index = 0;\n source.subscribe(createOperatorSubscriber(subscriber, function (value) {\n subscriber.next(project.call(thisArg, value, index++));\n }));\n });\n}\n//# sourceMappingURL=map.js.map","export var observable = (function () { return (typeof Symbol === 'function' && Symbol.observable) || '@@observable'; })();\n//# sourceMappingURL=observable.js.map","export function identity(x) {\n return x;\n}\n//# sourceMappingURL=identity.js.map","import { identity } from './identity';\nexport function pipe() {\n var fns = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n fns[_i] = arguments[_i];\n }\n return pipeFromArray(fns);\n}\nexport function pipeFromArray(fns) {\n if (fns.length === 0) {\n return identity;\n }\n if (fns.length === 1) {\n return fns[0];\n }\n return function piped(input) {\n return fns.reduce(function (prev, fn) { return fn(prev); }, input);\n };\n}\n//# sourceMappingURL=pipe.js.map","import { SafeSubscriber, Subscriber } from './Subscriber';\nimport { isSubscription } from './Subscription';\nimport { observable as Symbol_observable } from './symbol/observable';\nimport { pipeFromArray } from './util/pipe';\nimport { config } from './config';\nimport { isFunction } from './util/isFunction';\nimport { errorContext } from './util/errorContext';\nvar Observable = (function () {\n function Observable(subscribe) {\n if (subscribe) {\n this._subscribe = subscribe;\n }\n }\n Observable.prototype.lift = function (operator) {\n var observable = new Observable();\n observable.source = this;\n observable.operator = operator;\n return observable;\n };\n Observable.prototype.subscribe = function (observerOrNext, error, complete) {\n var _this = this;\n var subscriber = isSubscriber(observerOrNext) ? observerOrNext : new SafeSubscriber(observerOrNext, error, complete);\n errorContext(function () {\n var _a = _this, operator = _a.operator, source = _a.source;\n subscriber.add(operator\n ?\n operator.call(subscriber, source)\n : source\n ?\n _this._subscribe(subscriber)\n :\n _this._trySubscribe(subscriber));\n });\n return subscriber;\n };\n Observable.prototype._trySubscribe = function (sink) {\n try {\n return this._subscribe(sink);\n }\n catch (err) {\n sink.error(err);\n }\n };\n Observable.prototype.forEach = function (next, promiseCtor) {\n var _this = this;\n promiseCtor = getPromiseCtor(promiseCtor);\n return new promiseCtor(function (resolve, reject) {\n var subscriber = new SafeSubscriber({\n next: function (value) {\n try {\n next(value);\n }\n catch (err) {\n reject(err);\n subscriber.unsubscribe();\n }\n },\n error: reject,\n complete: resolve,\n });\n _this.subscribe(subscriber);\n });\n };\n Observable.prototype._subscribe = function (subscriber) {\n var _a;\n return (_a = this.source) === null || _a === void 0 ? void 0 : _a.subscribe(subscriber);\n };\n Observable.prototype[Symbol_observable] = function () {\n return this;\n };\n Observable.prototype.pipe = function () {\n var operations = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n operations[_i] = arguments[_i];\n }\n return pipeFromArray(operations)(this);\n };\n Observable.prototype.toPromise = function (promiseCtor) {\n var _this = this;\n promiseCtor = getPromiseCtor(promiseCtor);\n return new promiseCtor(function (resolve, reject) {\n var value;\n _this.subscribe(function (x) { return (value = x); }, function (err) { return reject(err); }, function () { return resolve(value); });\n });\n };\n Observable.create = function (subscribe) {\n return new Observable(subscribe);\n };\n return Observable;\n}());\nexport { Observable };\nfunction getPromiseCtor(promiseCtor) {\n var _a;\n return (_a = promiseCtor !== null && promiseCtor !== void 0 ? promiseCtor : config.Promise) !== null && _a !== void 0 ? _a : Promise;\n}\nfunction isObserver(value) {\n return value && isFunction(value.next) && isFunction(value.error) && isFunction(value.complete);\n}\nfunction isSubscriber(value) {\n return (value && value instanceof Subscriber) || (isObserver(value) && isSubscription(value));\n}\n//# sourceMappingURL=Observable.js.map","export function getSymbolIterator() {\n if (typeof Symbol !== 'function' || !Symbol.iterator) {\n return '@@iterator';\n }\n return Symbol.iterator;\n}\nexport var iterator = getSymbolIterator();\n//# sourceMappingURL=iterator.js.map","import { __asyncValues, __awaiter, __generator, __values } from \"tslib\";\nimport { isArrayLike } from '../util/isArrayLike';\nimport { isPromise } from '../util/isPromise';\nimport { Observable } from '../Observable';\nimport { isInteropObservable } from '../util/isInteropObservable';\nimport { isAsyncIterable } from '../util/isAsyncIterable';\nimport { createInvalidObservableTypeError } from '../util/throwUnobservableError';\nimport { isIterable } from '../util/isIterable';\nimport { isReadableStreamLike, readableStreamLikeToAsyncGenerator } from '../util/isReadableStreamLike';\nimport { isFunction } from '../util/isFunction';\nimport { reportUnhandledError } from '../util/reportUnhandledError';\nimport { observable as Symbol_observable } from '../symbol/observable';\nexport function innerFrom(input) {\n if (input instanceof Observable) {\n return input;\n }\n if (input != null) {\n if (isInteropObservable(input)) {\n return fromInteropObservable(input);\n }\n if (isArrayLike(input)) {\n return fromArrayLike(input);\n }\n if (isPromise(input)) {\n return fromPromise(input);\n }\n if (isAsyncIterable(input)) {\n return fromAsyncIterable(input);\n }\n if (isIterable(input)) {\n return fromIterable(input);\n }\n if (isReadableStreamLike(input)) {\n return fromReadableStreamLike(input);\n }\n }\n throw createInvalidObservableTypeError(input);\n}\nexport function fromInteropObservable(obj) {\n return new Observable(function (subscriber) {\n var obs = obj[Symbol_observable]();\n if (isFunction(obs.subscribe)) {\n return obs.subscribe(subscriber);\n }\n throw new TypeError('Provided object does not correctly implement Symbol.observable');\n });\n}\nexport function fromArrayLike(array) {\n return new Observable(function (subscriber) {\n for (var i = 0; i < array.length && !subscriber.closed; i++) {\n subscriber.next(array[i]);\n }\n subscriber.complete();\n });\n}\nexport function fromPromise(promise) {\n return new Observable(function (subscriber) {\n promise\n .then(function (value) {\n if (!subscriber.closed) {\n subscriber.next(value);\n subscriber.complete();\n }\n }, function (err) { return subscriber.error(err); })\n .then(null, reportUnhandledError);\n });\n}\nexport function fromIterable(iterable) {\n return new Observable(function (subscriber) {\n var e_1, _a;\n try {\n for (var iterable_1 = __values(iterable), iterable_1_1 = iterable_1.next(); !iterable_1_1.done; iterable_1_1 = iterable_1.next()) {\n var value = iterable_1_1.value;\n subscriber.next(value);\n if (subscriber.closed) {\n return;\n }\n }\n }\n catch (e_1_1) { e_1 = { error: e_1_1 }; }\n finally {\n try {\n if (iterable_1_1 && !iterable_1_1.done && (_a = iterable_1.return)) _a.call(iterable_1);\n }\n finally { if (e_1) throw e_1.error; }\n }\n subscriber.complete();\n });\n}\nexport function fromAsyncIterable(asyncIterable) {\n return new Observable(function (subscriber) {\n process(asyncIterable, subscriber).catch(function (err) { return subscriber.error(err); });\n });\n}\nexport function fromReadableStreamLike(readableStream) {\n return fromAsyncIterable(readableStreamLikeToAsyncGenerator(readableStream));\n}\nfunction process(asyncIterable, subscriber) {\n var asyncIterable_1, asyncIterable_1_1;\n var e_2, _a;\n return __awaiter(this, void 0, void 0, function () {\n var value, e_2_1;\n return __generator(this, function (_b) {\n switch (_b.label) {\n case 0:\n _b.trys.push([0, 5, 6, 11]);\n asyncIterable_1 = __asyncValues(asyncIterable);\n _b.label = 1;\n case 1: return [4, asyncIterable_1.next()];\n case 2:\n if (!(asyncIterable_1_1 = _b.sent(), !asyncIterable_1_1.done)) return [3, 4];\n value = asyncIterable_1_1.value;\n subscriber.next(value);\n if (subscriber.closed) {\n return [2];\n }\n _b.label = 3;\n case 3: return [3, 1];\n case 4: return [3, 11];\n case 5:\n e_2_1 = _b.sent();\n e_2 = { error: e_2_1 };\n return [3, 11];\n case 6:\n _b.trys.push([6, , 9, 10]);\n if (!(asyncIterable_1_1 && !asyncIterable_1_1.done && (_a = asyncIterable_1.return))) return [3, 8];\n return [4, _a.call(asyncIterable_1)];\n case 7:\n _b.sent();\n _b.label = 8;\n case 8: return [3, 10];\n case 9:\n if (e_2) throw e_2.error;\n return [7];\n case 10: return [7];\n case 11:\n subscriber.complete();\n return [2];\n }\n });\n });\n}\n//# sourceMappingURL=innerFrom.js.map","import { innerFrom } from '../observable/innerFrom';\nimport { createOperatorSubscriber } from './OperatorSubscriber';\nimport { operate } from '../util/lift';\nexport function catchError(selector) {\n return operate(function (source, subscriber) {\n var innerSub = null;\n var syncUnsub = false;\n var handledResult;\n innerSub = source.subscribe(createOperatorSubscriber(subscriber, undefined, undefined, function (err) {\n handledResult = innerFrom(selector(err, catchError(selector)(source)));\n if (innerSub) {\n innerSub.unsubscribe();\n innerSub = null;\n handledResult.subscribe(subscriber);\n }\n else {\n syncUnsub = true;\n }\n }));\n if (syncUnsub) {\n innerSub.unsubscribe();\n innerSub = null;\n handledResult.subscribe(subscriber);\n }\n });\n}\n//# sourceMappingURL=catchError.js.map","import { observable as Symbol_observable } from '../symbol/observable';\nimport { isFunction } from './isFunction';\nexport function isInteropObservable(input) {\n return isFunction(input[Symbol_observable]);\n}\n//# sourceMappingURL=isInteropObservable.js.map","export var isArrayLike = (function (x) { return x && typeof x.length === 'number' && typeof x !== 'function'; });\n//# sourceMappingURL=isArrayLike.js.map","import { isFunction } from \"./isFunction\";\nexport function isPromise(value) {\n return isFunction(value === null || value === void 0 ? void 0 : value.then);\n}\n//# sourceMappingURL=isPromise.js.map","import { isFunction } from './isFunction';\nexport function isAsyncIterable(obj) {\n return Symbol.asyncIterator && isFunction(obj === null || obj === void 0 ? void 0 : obj[Symbol.asyncIterator]);\n}\n//# sourceMappingURL=isAsyncIterable.js.map","import { iterator as Symbol_iterator } from '../symbol/iterator';\nimport { isFunction } from './isFunction';\nexport function isIterable(input) {\n return isFunction(input === null || input === void 0 ? void 0 : input[Symbol_iterator]);\n}\n//# sourceMappingURL=isIterable.js.map","import { __asyncGenerator, __await, __generator } from \"tslib\";\nimport { isFunction } from './isFunction';\nexport function readableStreamLikeToAsyncGenerator(readableStream) {\n return __asyncGenerator(this, arguments, function readableStreamLikeToAsyncGenerator_1() {\n var reader, _a, value, done;\n return __generator(this, function (_b) {\n switch (_b.label) {\n case 0:\n reader = readableStream.getReader();\n _b.label = 1;\n case 1:\n _b.trys.push([1, , 9, 10]);\n _b.label = 2;\n case 2:\n if (!true) return [3, 8];\n return [4, __await(reader.read())];\n case 3:\n _a = _b.sent(), value = _a.value, done = _a.done;\n if (!done) return [3, 5];\n return [4, __await(void 0)];\n case 4: return [2, _b.sent()];\n case 5: return [4, __await(value)];\n case 6: return [4, _b.sent()];\n case 7:\n _b.sent();\n return [3, 2];\n case 8: return [3, 10];\n case 9:\n reader.releaseLock();\n return [7];\n case 10: return [2];\n }\n });\n });\n}\nexport function isReadableStreamLike(obj) {\n return isFunction(obj === null || obj === void 0 ? void 0 : obj.getReader);\n}\n//# sourceMappingURL=isReadableStreamLike.js.map","export function createInvalidObservableTypeError(input) {\n return new TypeError(\"You provided \" + (input !== null && typeof input === 'object' ? 'an invalid object' : \"'\" + input + \"'\") + \" where a stream was expected. You can provide an Observable, Promise, ReadableStream, Array, AsyncIterable, or Iterable.\");\n}\n//# sourceMappingURL=throwUnobservableError.js.map","import { getBackendSrv, BackendSrvRequest, FetchResponse } from \"@grafana/runtime\";\nimport {\n DataQueryRequest,\n DataQueryResponse,\n DataSourceApi,\n DataSourceInstanceSettings,\n toDataFrame,\n} from '@grafana/data';\nimport { lastValueFrom, of } from 'rxjs';\nimport { catchError, map } from 'rxjs/operators';\nimport { isArray, isNull } from \"lodash\";\n\nimport {\n MyQuery,\n MyDataSourceOptions,\n QueryEditorMode,\n StreamName,\n StreamList,\n StreamSchemaResponse,\n StreamStatsResponse\n} from './types';\nexport class DataSource extends DataSourceApi {\n url: string;\n withCredentials: boolean;\n headers: any;\n defaultEditorMode: QueryEditorMode;\n constructor(instanceSettings: DataSourceInstanceSettings) {\n super(instanceSettings);\n this.url = instanceSettings.url === undefined ? '' : instanceSettings.url;\n this.withCredentials = instanceSettings.withCredentials !== undefined;\n this.defaultEditorMode = instanceSettings.jsonData?.defaultEditorMode ?? \"code\"\n }\n\n async doRequest(query: MyQuery) {\n const routePath = '/api/v1'\n const result = await getBackendSrv().datasourceRequest({\n method: \"GET\",\n url: this.url + routePath + '/readiness',\n params: query,\n })\n return result;\n }\n\n async query(options: DataQueryRequest): Promise {\n options.targets = options.targets.filter((t) => !t.hide);\n if (options.targets.length === 0) {\n return Promise.resolve({ data: [] });\n }\n\n const { range } = options;\n if (!range) {\n return Promise.resolve({ data: [] });\n }\n const start = range!.from;\n const end = range!.to;\n\n const calls = options.targets.map(target => {\n const request = {\n \"query\": target.queryText,\n \"startTime\": start.toISOString(),\n \"endTime\": end.toISOString(),\n \"send_null\": true\n };\n return lastValueFrom(\n this.doFetch({\n url: this.url + '/api/v1/query',\n data: request,\n method: 'POST',\n }).pipe(\n map((response) => {\n return toDataFrame(response.data);\n }),\n catchError((err) => {\n return of({ data: [] });\n })\n )\n );\n });\n\n const data = await Promise.all(calls);\n return {\n data,\n };\n }\n\n doFetch(options: BackendSrvRequest) {\n options.withCredentials = this.withCredentials;\n options.headers = this.headers;\n\n return getBackendSrv().fetch(options);\n }\n\n async listStreams(): Promise {\n return lastValueFrom(\n this.doFetch({\n url: this.url + '/api/v1/logstream',\n method: 'GET',\n }).pipe(\n map((response) =>\n isArray(response.data)\n ? response.data\n : []\n ),\n catchError((err) => {\n return of([]);\n }))\n );\n }\n\n async streamStats(streamname: StreamName): Promise {\n if (streamname) {\n return lastValueFrom(\n this.doFetch({\n url: this.url + '/api/v1/logstream/' + streamname.value + '/stats',\n method: 'GET',\n }).pipe(\n map((response) =>\n (typeof response.data === 'object' && !isNull(response.data))\n ? response.data\n : {}\n ),\n catchError((err) => {\n return of({\n status: 'error',\n message: err.statusText\n })\n\n }))\n )\n }\n return {}\n }\n\n async streamSchema(streamname: StreamName): Promise {\n if (streamname) {\n return lastValueFrom(\n this.doFetch({\n url: this.url + '/api/v1/logstream/' + streamname.value + '/schema',\n method: 'GET',\n }).pipe(\n map((response) =>\n (typeof response.data === 'object' && !isNull(response.data))\n ? response.data\n : {}\n ),\n catchError((err) => {\n return of({\n status: 'error',\n message: err.statusText\n })\n\n }))\n )\n }\n return { fields: [] }\n }\n\n async testDatasource() {\n const errorMessageBase = 'Parseable server is not reachable';\n try {\n const response = await lastValueFrom(\n this.doFetch({\n url: this.url + '/api/v1/readiness',\n method: 'GET',\n }).pipe(map((response) => response))\n );\n\n if (response.status === 200) {\n return { status: 'success', message: 'Parseable server is reachable', title: 'Success' };\n }\n\n return {\n message: response.statusText ? response.statusText : errorMessageBase,\n status: 'error',\n title: 'Error',\n };\n } catch (err) {\n if (typeof err === 'string') {\n return {\n status: 'error',\n message: err,\n };\n }\n\n let error = err as FetchResponse;\n let message = error.statusText ?? errorMessageBase;\n if (error.data?.error?.code !== undefined) {\n message += `: ${error.data.error.code}. ${error.data.error.message}`;\n }\n\n return { status: 'error', message, title: 'Error' };\n }\n }\n}\n","import React, { PureComponent } from 'react';\nimport { DataSourceHttpSettings } from '@grafana/ui';\nimport { DataSourcePluginOptionsEditorProps } from '@grafana/data';\nimport { MyDataSourceOptions, MySecureJsonData } from '../types';\n\n//const { SecretFormField, FormField } = LegacyForms;\n\ninterface Props extends DataSourcePluginOptionsEditorProps {}\n\ninterface State {}\n\nexport class ConfigEditor extends PureComponent {\n render() {\n const { onOptionsChange, options } = this.props;\n return (\n
\n \n
\n );\n }\n}\n","import React, { ComponentType, ChangeEvent, useState } from 'react';\nimport { LegacyForms, AsyncSelect, InlineField, InlineFieldRow, SeriesTable, Label} from '@grafana/ui';\nimport { QueryEditorProps, SelectableValue, GraphSeriesValue } from '@grafana/data';\nimport { DataSource } from '../datasource';\nimport { SchemaFields, MyDataSourceOptions, MyQuery } from '../types';\n\nconst { FormField } = LegacyForms;\n\ninterface Props extends QueryEditorProps {\n payload?: string;\n}\n\nexport const QueryEditor: ComponentType = ({ datasource, onChange, onRunQuery, query }) => {\n\n const { queryText } = query;\n //const [stream, setStream] = React.useState>();\n\n const loadAsyncOptions = React.useCallback(() => {\n return datasource.listStreams().then(\n (result) => {\n const stream = result.map((data) => ({ label: data.name, value: data.name }));\n return stream;\n },\n (response) => {\n //setStream({ label: '', value: '' });\n throw new Error(response.statusText);\n }\n );\n }, [datasource]);\n\n const [value, setValue] = useState>();\n const [schema = '', setSchema] = React.useState();\n const [count = '', setEventCount] = React.useState();\n const [jsonsize = '', setJsonSize] = React.useState();\n const [parquetsize = '', setParquetSize] = React.useState();\n const [streamname = '', setStreamName] = React.useState();\n const [time = '', setTime] = React.useState();\n //const [fielder, setFielder] = React.useState();\n\n const loadStreamSchema = React.useCallback((value) => {\n if (value) {\n return datasource.streamSchema(value).then(\n (result) => {\n if (result.fields) {\n const schema = result.fields.map((data: SchemaFields) => (data.name));\n const schemaToText = schema.join(\", \")\n setSchema(schemaToText);\n return schema;\n }\n return schema;\n },\n (response) => {\n throw new Error(response.statusText);\n }\n );\n }\n return '';\n }, [datasource, schema]);\n\n const loadStreamStats = React.useCallback((value) => {\n if (value) {\n return datasource.streamStats(value).then(\n (result) => {\n if (result.ingestion) {\n const count = result.ingestion.count;\n const jsonsize = result.ingestion.size;\n const parquetsize = result.storage?.size;\n const streamname = result.stream;\n const time = result.time;\n setJsonSize(jsonsize);\n setParquetSize(parquetsize);\n setStreamName(streamname);\n setEventCount(count);\n setTime(time);\n return count;\n }\n return count;\n },\n (response) => {\n throw new Error(response.statusText);\n }\n );\n }\n return '';\n }, [datasource, count]);\n\n const onQueryTextChange = (event: ChangeEvent) => {\n onChange({ ...query, queryText: event.target.value });\n };\n\n React.useEffect(() => {\n const getData = setTimeout(() => {\n onRunQuery()\n },\n 2000)\n return () => clearTimeout(getData)\n }, [onRunQuery, queryText])\n\n React.useEffect(() => {\n loadStreamSchema(value)\n }, [loadStreamSchema, value]);\n\n React.useEffect(() => {\n loadStreamStats(value)\n }, [loadStreamStats, value]);\n\n return (\n <>\n \n \n \n \n \n {\n setValue(v);\n }}/>\n \n {/* \n \n */}\n \n\n \n \n \n \n \n\n

\n \n \n );\n};\n","import { DataSourcePlugin } from '@grafana/data';\nimport { DataSource } from './datasource';\nimport { ConfigEditor } from './components/ConfigEditor';\nimport { QueryEditor } from './components/QueryEditor';\nimport { MyQuery, MyDataSourceOptions } from './types';\n\nexport const plugin = new DataSourcePlugin(DataSource)\n .setConfigEditor(ConfigEditor)\n .setQueryEditor(QueryEditor);\n"],"names":["module","exports","__WEBPACK_EXTERNAL_MODULE__305__","__WEBPACK_EXTERNAL_MODULE__545__","__WEBPACK_EXTERNAL_MODULE__388__","__WEBPACK_EXTERNAL_MODULE__980__","__WEBPACK_EXTERNAL_MODULE__650__","__WEBPACK_EXTERNAL_MODULE__177__","__webpack_module_cache__","__webpack_require__","moduleId","cachedModule","undefined","__webpack_modules__","n","getter","__esModule","d","a","definition","key","o","Object","defineProperty","enumerable","get","obj","prop","prototype","hasOwnProperty","call","r","Symbol","toStringTag","value","isFunction","operate","init","source","lift","hasLift","liftedSource","this","err","error","TypeError","extendStatics","b","setPrototypeOf","__proto__","Array","p","__extends","String","__","constructor","create","__generator","thisArg","body","f","y","t","g","_","label","sent","trys","ops","next","verb","iterator","v","op","done","pop","length","push","e","step","__values","s","m","i","__read","ar","__spreadArray","to","from","pack","arguments","l","slice","concat","__await","__asyncGenerator","_arguments","generator","asyncIterator","apply","q","Promise","resume","resolve","then","fulfill","reject","settle","shift","ctorFunc","UnsubscriptionError","errors","instance","Error","stack","message","map","toString","join","name","arrRemove","arr","item","index","indexOf","splice","Subscription","initialTeardown","closed","_parentage","_finalizers","empty","unsubscribe","e_1","_a","e_2","_b","isArray","_parentage_1","_parentage_1_1","remove","e_1_1","return","initialFinalizer","_finalizers_1","_finalizers_1_1","finalizer","execFinalizer","e_2_1","add","teardown","_hasParent","_addParent","parent","includes","_removeParent","EMPTY","isSubscription","config","timeoutProvider","setTimeout","handler","timeout","args","_i","delegate","clearTimeout","handle","reportUnhandledError","noop","COMPLETE_NOTIFICATION","createNotification","kind","context","Subscriber","_super","destination","_this","isStopped","EMPTY_OBSERVER","complete","SafeSubscriber","handleStoppedNotification","nextNotification","_next","_error","_complete","_bind","Function","bind","fn","ConsumerObserver","partialObserver","handleUnhandledError","observerOrNext","context_1","errorThrown","notification","subscriber","onStoppedNotification","createOperatorSubscriber","onNext","onComplete","onError","onFinalize","OperatorSubscriber","shouldUnsubscribe","closed_1","project","subscribe","observable","identity","x","pipeFromArray","fns","input","reduce","prev","Observable","_subscribe","operator","isObserver","cb","isRoot","errorContext","_trySubscribe","sink","forEach","promiseCtor","getPromiseCtor","pipe","operations","toPromise","fromAsyncIterable","asyncIterable","asyncIterable_1","asyncIterable_1_1","P","__asyncValues","fulfilled","rejected","result","process","catch","catchError","selector","handledResult","innerSub","syncUnsub","isInteropObservable","obs","array","promise","isAsyncIterable","isIterable","iterable","iterable_1","iterable_1_1","getReader","isReadableStreamLike","readableStream","reader","read","releaseLock","readableStreamLikeToAsyncGenerator","createInvalidObservableTypeError","innerFrom","DataSource","DataSourceApi","doRequest","query","getBackendSrv","datasourceRequest","method","url","params","options","targets","filter","hide","data","range","start","end","calls","target","request","queryText","toISOString","lastValueFrom","doFetch","response","toDataFrame","of","all","withCredentials","headers","fetch","listStreams","streamStats","streamname","isNull","status","statusText","streamSchema","fields","testDatasource","errorMessageBase","title","code","instanceSettings","super","defaultEditorMode","jsonData","ConfigEditor","PureComponent","render","onOptionsChange","props","div","className","DataSourceHttpSettings","defaultUrl","dataSourceConfig","showAccessOptions","onChange","FormField","LegacyForms","plugin","DataSourcePlugin","setConfigEditor","setQueryEditor","datasource","onRunQuery","loadAsyncOptions","React","setValue","useState","schema","setSchema","count","setEventCount","jsonsize","setJsonSize","parquetsize","setParquetSize","setStreamName","time","setTime","loadStreamSchema","schemaToText","loadStreamStats","ingestion","size","storage","stream","getData","InlineFieldRow","InlineField","Label","AsyncSelect","loadOptions","defaultOptions","SeriesTable","series","color","isActive","timestamp","br","labelWidth","inputWidth","event","tooltip"],"sourceRoot":""} \ No newline at end of file +{"version":3,"file":"module.js","mappings":"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","sources":["webpack:///external amd \"@grafana/data\"","webpack:///external amd \"@grafana/runtime\"","webpack:///external amd \"@grafana/ui\"","webpack:///external amd \"lodash\"","webpack:///external amd \"react\"","webpack:///external amd \"rxjs\"","webpack:///webpack/bootstrap","webpack:///webpack/runtime/compat get default export","webpack:///webpack/runtime/define property getters","webpack:///webpack/runtime/hasOwnProperty shorthand","webpack:///webpack/runtime/make namespace object","webpack:///../node_modules/rxjs/dist/esm5/internal/util/isFunction.js","webpack:///../node_modules/rxjs/dist/esm5/internal/util/lift.js","webpack:///../node_modules/tslib/tslib.es6.js","webpack:///../node_modules/rxjs/dist/esm5/internal/util/UnsubscriptionError.js","webpack:///../node_modules/rxjs/dist/esm5/internal/util/createErrorClass.js","webpack:///../node_modules/rxjs/dist/esm5/internal/util/arrRemove.js","webpack:///../node_modules/rxjs/dist/esm5/internal/Subscription.js","webpack:///../node_modules/rxjs/dist/esm5/internal/config.js","webpack:///../node_modules/rxjs/dist/esm5/internal/scheduler/timeoutProvider.js","webpack:///../node_modules/rxjs/dist/esm5/internal/util/reportUnhandledError.js","webpack:///../node_modules/rxjs/dist/esm5/internal/util/noop.js","webpack:///../node_modules/rxjs/dist/esm5/internal/NotificationFactories.js","webpack:///../node_modules/rxjs/dist/esm5/internal/util/errorContext.js","webpack:///../node_modules/rxjs/dist/esm5/internal/Subscriber.js","webpack:///../node_modules/rxjs/dist/esm5/internal/operators/OperatorSubscriber.js","webpack:///../node_modules/rxjs/dist/esm5/internal/operators/map.js","webpack:///../node_modules/rxjs/dist/esm5/internal/symbol/observable.js","webpack:///../node_modules/rxjs/dist/esm5/internal/util/identity.js","webpack:///../node_modules/rxjs/dist/esm5/internal/util/pipe.js","webpack:///../node_modules/rxjs/dist/esm5/internal/Observable.js","webpack:///../node_modules/rxjs/dist/esm5/internal/symbol/iterator.js","webpack:///../node_modules/rxjs/dist/esm5/internal/observable/innerFrom.js","webpack:///../node_modules/rxjs/dist/esm5/internal/operators/catchError.js","webpack:///../node_modules/rxjs/dist/esm5/internal/util/isInteropObservable.js","webpack:///../node_modules/rxjs/dist/esm5/internal/util/isArrayLike.js","webpack:///../node_modules/rxjs/dist/esm5/internal/util/isPromise.js","webpack:///../node_modules/rxjs/dist/esm5/internal/util/isAsyncIterable.js","webpack:///../node_modules/rxjs/dist/esm5/internal/util/isIterable.js","webpack:///../node_modules/rxjs/dist/esm5/internal/util/isReadableStreamLike.js","webpack:///../node_modules/rxjs/dist/esm5/internal/util/throwUnobservableError.js","webpack:///./datasource.ts","webpack:///./components/ConfigEditor.tsx","webpack:///./components/QueryEditor.tsx","webpack:///./module.ts"],"sourcesContent":["module.exports = __WEBPACK_EXTERNAL_MODULE__305__;","module.exports = __WEBPACK_EXTERNAL_MODULE__545__;","module.exports = __WEBPACK_EXTERNAL_MODULE__388__;","module.exports = __WEBPACK_EXTERNAL_MODULE__980__;","module.exports = __WEBPACK_EXTERNAL_MODULE__650__;","module.exports = __WEBPACK_EXTERNAL_MODULE__177__;","// The module cache\nvar __webpack_module_cache__ = {};\n\n// The require function\nfunction __webpack_require__(moduleId) {\n\t// Check if module is in cache\n\tvar cachedModule = __webpack_module_cache__[moduleId];\n\tif (cachedModule !== undefined) {\n\t\treturn cachedModule.exports;\n\t}\n\t// Create a new module (and put it into the cache)\n\tvar module = __webpack_module_cache__[moduleId] = {\n\t\t// no module.id needed\n\t\t// no module.loaded needed\n\t\texports: {}\n\t};\n\n\t// Execute the module function\n\t__webpack_modules__[moduleId](module, module.exports, __webpack_require__);\n\n\t// Return the exports of the module\n\treturn module.exports;\n}\n\n","// getDefaultExport function for compatibility with non-harmony modules\n__webpack_require__.n = (module) => {\n\tvar getter = module && module.__esModule ?\n\t\t() => (module['default']) :\n\t\t() => (module);\n\t__webpack_require__.d(getter, { a: getter });\n\treturn getter;\n};","// define getter functions for harmony exports\n__webpack_require__.d = (exports, definition) => {\n\tfor(var key in definition) {\n\t\tif(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {\n\t\t\tObject.defineProperty(exports, key, { enumerable: true, get: definition[key] });\n\t\t}\n\t}\n};","__webpack_require__.o = (obj, prop) => (Object.prototype.hasOwnProperty.call(obj, prop))","// define __esModule on exports\n__webpack_require__.r = (exports) => {\n\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n\t}\n\tObject.defineProperty(exports, '__esModule', { value: true });\n};","export function isFunction(value) {\n return typeof value === 'function';\n}\n//# sourceMappingURL=isFunction.js.map","import { isFunction } from './isFunction';\nexport function hasLift(source) {\n return isFunction(source === null || source === void 0 ? void 0 : source.lift);\n}\nexport function operate(init) {\n return function (source) {\n if (hasLift(source)) {\n return source.lift(function (liftedSource) {\n try {\n return init(liftedSource, this);\n }\n catch (err) {\n this.error(err);\n }\n });\n }\n throw new TypeError('Unable to lift unknown Observable type');\n };\n}\n//# sourceMappingURL=lift.js.map","/******************************************************************************\r\nCopyright (c) Microsoft Corporation.\r\n\r\nPermission to use, copy, modify, and/or distribute this software for any\r\npurpose with or without fee is hereby granted.\r\n\r\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\r\nREGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\r\nAND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\r\nINDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\r\nLOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\r\nOTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\r\nPERFORMANCE OF THIS SOFTWARE.\r\n***************************************************************************** */\r\n/* global Reflect, Promise */\r\n\r\nvar extendStatics = function(d, b) {\r\n extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n};\r\n\r\nexport function __extends(d, b) {\r\n if (typeof b !== \"function\" && b !== null)\r\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n}\r\n\r\nexport var __assign = function() {\r\n __assign = Object.assign || function __assign(t) {\r\n for (var s, i = 1, n = arguments.length; i < n; i++) {\r\n s = arguments[i];\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\r\n }\r\n return t;\r\n }\r\n return __assign.apply(this, arguments);\r\n}\r\n\r\nexport function __rest(s, e) {\r\n var t = {};\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\r\n t[p] = s[p];\r\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\r\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\r\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\r\n t[p[i]] = s[p[i]];\r\n }\r\n return t;\r\n}\r\n\r\nexport function __decorate(decorators, target, key, desc) {\r\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\r\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\r\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\r\n return c > 3 && r && Object.defineProperty(target, key, r), r;\r\n}\r\n\r\nexport function __param(paramIndex, decorator) {\r\n return function (target, key) { decorator(target, key, paramIndex); }\r\n}\r\n\r\nexport function __metadata(metadataKey, metadataValue) {\r\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(metadataKey, metadataValue);\r\n}\r\n\r\nexport function __awaiter(thisArg, _arguments, P, generator) {\r\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\r\n return new (P || (P = Promise))(function (resolve, reject) {\r\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\r\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\r\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\r\n step((generator = generator.apply(thisArg, _arguments || [])).next());\r\n });\r\n}\r\n\r\nexport function __generator(thisArg, body) {\r\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\r\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\r\n function verb(n) { return function (v) { return step([n, v]); }; }\r\n function step(op) {\r\n if (f) throw new TypeError(\"Generator is already executing.\");\r\n while (_) try {\r\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\r\n if (y = 0, t) op = [op[0] & 2, t.value];\r\n switch (op[0]) {\r\n case 0: case 1: t = op; break;\r\n case 4: _.label++; return { value: op[1], done: false };\r\n case 5: _.label++; y = op[1]; op = [0]; continue;\r\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\r\n default:\r\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\r\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\r\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\r\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\r\n if (t[2]) _.ops.pop();\r\n _.trys.pop(); continue;\r\n }\r\n op = body.call(thisArg, _);\r\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\r\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\r\n }\r\n}\r\n\r\nexport var __createBinding = Object.create ? (function(o, m, k, k2) {\r\n if (k2 === undefined) k2 = k;\r\n var desc = Object.getOwnPropertyDescriptor(m, k);\r\n if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\r\n desc = { enumerable: true, get: function() { return m[k]; } };\r\n }\r\n Object.defineProperty(o, k2, desc);\r\n}) : (function(o, m, k, k2) {\r\n if (k2 === undefined) k2 = k;\r\n o[k2] = m[k];\r\n});\r\n\r\nexport function __exportStar(m, o) {\r\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(o, p)) __createBinding(o, m, p);\r\n}\r\n\r\nexport function __values(o) {\r\n var s = typeof Symbol === \"function\" && Symbol.iterator, m = s && o[s], i = 0;\r\n if (m) return m.call(o);\r\n if (o && typeof o.length === \"number\") return {\r\n next: function () {\r\n if (o && i >= o.length) o = void 0;\r\n return { value: o && o[i++], done: !o };\r\n }\r\n };\r\n throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\r\n}\r\n\r\nexport function __read(o, n) {\r\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\r\n if (!m) return o;\r\n var i = m.call(o), r, ar = [], e;\r\n try {\r\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\r\n }\r\n catch (error) { e = { error: error }; }\r\n finally {\r\n try {\r\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\r\n }\r\n finally { if (e) throw e.error; }\r\n }\r\n return ar;\r\n}\r\n\r\n/** @deprecated */\r\nexport function __spread() {\r\n for (var ar = [], i = 0; i < arguments.length; i++)\r\n ar = ar.concat(__read(arguments[i]));\r\n return ar;\r\n}\r\n\r\n/** @deprecated */\r\nexport function __spreadArrays() {\r\n for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;\r\n for (var r = Array(s), k = 0, i = 0; i < il; i++)\r\n for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)\r\n r[k] = a[j];\r\n return r;\r\n}\r\n\r\nexport function __spreadArray(to, from, pack) {\r\n if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {\r\n if (ar || !(i in from)) {\r\n if (!ar) ar = Array.prototype.slice.call(from, 0, i);\r\n ar[i] = from[i];\r\n }\r\n }\r\n return to.concat(ar || Array.prototype.slice.call(from));\r\n}\r\n\r\nexport function __await(v) {\r\n return this instanceof __await ? (this.v = v, this) : new __await(v);\r\n}\r\n\r\nexport function __asyncGenerator(thisArg, _arguments, generator) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var g = generator.apply(thisArg, _arguments || []), i, q = [];\r\n return i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i;\r\n function verb(n) { if (g[n]) i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; }\r\n function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } }\r\n function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); }\r\n function fulfill(value) { resume(\"next\", value); }\r\n function reject(value) { resume(\"throw\", value); }\r\n function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); }\r\n}\r\n\r\nexport function __asyncDelegator(o) {\r\n var i, p;\r\n return i = {}, verb(\"next\"), verb(\"throw\", function (e) { throw e; }), verb(\"return\"), i[Symbol.iterator] = function () { return this; }, i;\r\n function verb(n, f) { i[n] = o[n] ? function (v) { return (p = !p) ? { value: __await(o[n](v)), done: n === \"return\" } : f ? f(v) : v; } : f; }\r\n}\r\n\r\nexport function __asyncValues(o) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var m = o[Symbol.asyncIterator], i;\r\n return m ? m.call(o) : (o = typeof __values === \"function\" ? __values(o) : o[Symbol.iterator](), i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i);\r\n function verb(n) { i[n] = o[n] && function (v) { return new Promise(function (resolve, reject) { v = o[n](v), settle(resolve, reject, v.done, v.value); }); }; }\r\n function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); }\r\n}\r\n\r\nexport function __makeTemplateObject(cooked, raw) {\r\n if (Object.defineProperty) { Object.defineProperty(cooked, \"raw\", { value: raw }); } else { cooked.raw = raw; }\r\n return cooked;\r\n};\r\n\r\nvar __setModuleDefault = Object.create ? (function(o, v) {\r\n Object.defineProperty(o, \"default\", { enumerable: true, value: v });\r\n}) : function(o, v) {\r\n o[\"default\"] = v;\r\n};\r\n\r\nexport function __importStar(mod) {\r\n if (mod && mod.__esModule) return mod;\r\n var result = {};\r\n if (mod != null) for (var k in mod) if (k !== \"default\" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);\r\n __setModuleDefault(result, mod);\r\n return result;\r\n}\r\n\r\nexport function __importDefault(mod) {\r\n return (mod && mod.__esModule) ? mod : { default: mod };\r\n}\r\n\r\nexport function __classPrivateFieldGet(receiver, state, kind, f) {\r\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a getter\");\r\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot read private member from an object whose class did not declare it\");\r\n return kind === \"m\" ? f : kind === \"a\" ? f.call(receiver) : f ? f.value : state.get(receiver);\r\n}\r\n\r\nexport function __classPrivateFieldSet(receiver, state, value, kind, f) {\r\n if (kind === \"m\") throw new TypeError(\"Private method is not writable\");\r\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a setter\");\r\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot write private member to an object whose class did not declare it\");\r\n return (kind === \"a\" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;\r\n}\r\n\r\nexport function __classPrivateFieldIn(state, receiver) {\r\n if (receiver === null || (typeof receiver !== \"object\" && typeof receiver !== \"function\")) throw new TypeError(\"Cannot use 'in' operator on non-object\");\r\n return typeof state === \"function\" ? receiver === state : state.has(receiver);\r\n}\r\n","import { createErrorClass } from './createErrorClass';\nexport var UnsubscriptionError = createErrorClass(function (_super) {\n return function UnsubscriptionErrorImpl(errors) {\n _super(this);\n this.message = errors\n ? errors.length + \" errors occurred during unsubscription:\\n\" + errors.map(function (err, i) { return i + 1 + \") \" + err.toString(); }).join('\\n ')\n : '';\n this.name = 'UnsubscriptionError';\n this.errors = errors;\n };\n});\n//# sourceMappingURL=UnsubscriptionError.js.map","export function createErrorClass(createImpl) {\n var _super = function (instance) {\n Error.call(instance);\n instance.stack = new Error().stack;\n };\n var ctorFunc = createImpl(_super);\n ctorFunc.prototype = Object.create(Error.prototype);\n ctorFunc.prototype.constructor = ctorFunc;\n return ctorFunc;\n}\n//# sourceMappingURL=createErrorClass.js.map","export function arrRemove(arr, item) {\n if (arr) {\n var index = arr.indexOf(item);\n 0 <= index && arr.splice(index, 1);\n }\n}\n//# sourceMappingURL=arrRemove.js.map","import { __read, __spreadArray, __values } from \"tslib\";\nimport { isFunction } from './util/isFunction';\nimport { UnsubscriptionError } from './util/UnsubscriptionError';\nimport { arrRemove } from './util/arrRemove';\nvar Subscription = (function () {\n function Subscription(initialTeardown) {\n this.initialTeardown = initialTeardown;\n this.closed = false;\n this._parentage = null;\n this._finalizers = null;\n }\n Subscription.prototype.unsubscribe = function () {\n var e_1, _a, e_2, _b;\n var errors;\n if (!this.closed) {\n this.closed = true;\n var _parentage = this._parentage;\n if (_parentage) {\n this._parentage = null;\n if (Array.isArray(_parentage)) {\n try {\n for (var _parentage_1 = __values(_parentage), _parentage_1_1 = _parentage_1.next(); !_parentage_1_1.done; _parentage_1_1 = _parentage_1.next()) {\n var parent_1 = _parentage_1_1.value;\n parent_1.remove(this);\n }\n }\n catch (e_1_1) { e_1 = { error: e_1_1 }; }\n finally {\n try {\n if (_parentage_1_1 && !_parentage_1_1.done && (_a = _parentage_1.return)) _a.call(_parentage_1);\n }\n finally { if (e_1) throw e_1.error; }\n }\n }\n else {\n _parentage.remove(this);\n }\n }\n var initialFinalizer = this.initialTeardown;\n if (isFunction(initialFinalizer)) {\n try {\n initialFinalizer();\n }\n catch (e) {\n errors = e instanceof UnsubscriptionError ? e.errors : [e];\n }\n }\n var _finalizers = this._finalizers;\n if (_finalizers) {\n this._finalizers = null;\n try {\n for (var _finalizers_1 = __values(_finalizers), _finalizers_1_1 = _finalizers_1.next(); !_finalizers_1_1.done; _finalizers_1_1 = _finalizers_1.next()) {\n var finalizer = _finalizers_1_1.value;\n try {\n execFinalizer(finalizer);\n }\n catch (err) {\n errors = errors !== null && errors !== void 0 ? errors : [];\n if (err instanceof UnsubscriptionError) {\n errors = __spreadArray(__spreadArray([], __read(errors)), __read(err.errors));\n }\n else {\n errors.push(err);\n }\n }\n }\n }\n catch (e_2_1) { e_2 = { error: e_2_1 }; }\n finally {\n try {\n if (_finalizers_1_1 && !_finalizers_1_1.done && (_b = _finalizers_1.return)) _b.call(_finalizers_1);\n }\n finally { if (e_2) throw e_2.error; }\n }\n }\n if (errors) {\n throw new UnsubscriptionError(errors);\n }\n }\n };\n Subscription.prototype.add = function (teardown) {\n var _a;\n if (teardown && teardown !== this) {\n if (this.closed) {\n execFinalizer(teardown);\n }\n else {\n if (teardown instanceof Subscription) {\n if (teardown.closed || teardown._hasParent(this)) {\n return;\n }\n teardown._addParent(this);\n }\n (this._finalizers = (_a = this._finalizers) !== null && _a !== void 0 ? _a : []).push(teardown);\n }\n }\n };\n Subscription.prototype._hasParent = function (parent) {\n var _parentage = this._parentage;\n return _parentage === parent || (Array.isArray(_parentage) && _parentage.includes(parent));\n };\n Subscription.prototype._addParent = function (parent) {\n var _parentage = this._parentage;\n this._parentage = Array.isArray(_parentage) ? (_parentage.push(parent), _parentage) : _parentage ? [_parentage, parent] : parent;\n };\n Subscription.prototype._removeParent = function (parent) {\n var _parentage = this._parentage;\n if (_parentage === parent) {\n this._parentage = null;\n }\n else if (Array.isArray(_parentage)) {\n arrRemove(_parentage, parent);\n }\n };\n Subscription.prototype.remove = function (teardown) {\n var _finalizers = this._finalizers;\n _finalizers && arrRemove(_finalizers, teardown);\n if (teardown instanceof Subscription) {\n teardown._removeParent(this);\n }\n };\n Subscription.EMPTY = (function () {\n var empty = new Subscription();\n empty.closed = true;\n return empty;\n })();\n return Subscription;\n}());\nexport { Subscription };\nexport var EMPTY_SUBSCRIPTION = Subscription.EMPTY;\nexport function isSubscription(value) {\n return (value instanceof Subscription ||\n (value && 'closed' in value && isFunction(value.remove) && isFunction(value.add) && isFunction(value.unsubscribe)));\n}\nfunction execFinalizer(finalizer) {\n if (isFunction(finalizer)) {\n finalizer();\n }\n else {\n finalizer.unsubscribe();\n }\n}\n//# sourceMappingURL=Subscription.js.map","export var config = {\n onUnhandledError: null,\n onStoppedNotification: null,\n Promise: undefined,\n useDeprecatedSynchronousErrorHandling: false,\n useDeprecatedNextContext: false,\n};\n//# sourceMappingURL=config.js.map","import { __read, __spreadArray } from \"tslib\";\nexport var timeoutProvider = {\n setTimeout: function (handler, timeout) {\n var args = [];\n for (var _i = 2; _i < arguments.length; _i++) {\n args[_i - 2] = arguments[_i];\n }\n var delegate = timeoutProvider.delegate;\n if (delegate === null || delegate === void 0 ? void 0 : delegate.setTimeout) {\n return delegate.setTimeout.apply(delegate, __spreadArray([handler, timeout], __read(args)));\n }\n return setTimeout.apply(void 0, __spreadArray([handler, timeout], __read(args)));\n },\n clearTimeout: function (handle) {\n var delegate = timeoutProvider.delegate;\n return ((delegate === null || delegate === void 0 ? void 0 : delegate.clearTimeout) || clearTimeout)(handle);\n },\n delegate: undefined,\n};\n//# sourceMappingURL=timeoutProvider.js.map","import { config } from '../config';\nimport { timeoutProvider } from '../scheduler/timeoutProvider';\nexport function reportUnhandledError(err) {\n timeoutProvider.setTimeout(function () {\n var onUnhandledError = config.onUnhandledError;\n if (onUnhandledError) {\n onUnhandledError(err);\n }\n else {\n throw err;\n }\n });\n}\n//# sourceMappingURL=reportUnhandledError.js.map","export function noop() { }\n//# sourceMappingURL=noop.js.map","export var COMPLETE_NOTIFICATION = (function () { return createNotification('C', undefined, undefined); })();\nexport function errorNotification(error) {\n return createNotification('E', undefined, error);\n}\nexport function nextNotification(value) {\n return createNotification('N', value, undefined);\n}\nexport function createNotification(kind, value, error) {\n return {\n kind: kind,\n value: value,\n error: error,\n };\n}\n//# sourceMappingURL=NotificationFactories.js.map","import { config } from '../config';\nvar context = null;\nexport function errorContext(cb) {\n if (config.useDeprecatedSynchronousErrorHandling) {\n var isRoot = !context;\n if (isRoot) {\n context = { errorThrown: false, error: null };\n }\n cb();\n if (isRoot) {\n var _a = context, errorThrown = _a.errorThrown, error = _a.error;\n context = null;\n if (errorThrown) {\n throw error;\n }\n }\n }\n else {\n cb();\n }\n}\nexport function captureError(err) {\n if (config.useDeprecatedSynchronousErrorHandling && context) {\n context.errorThrown = true;\n context.error = err;\n }\n}\n//# sourceMappingURL=errorContext.js.map","import { __extends } from \"tslib\";\nimport { isFunction } from './util/isFunction';\nimport { isSubscription, Subscription } from './Subscription';\nimport { config } from './config';\nimport { reportUnhandledError } from './util/reportUnhandledError';\nimport { noop } from './util/noop';\nimport { nextNotification, errorNotification, COMPLETE_NOTIFICATION } from './NotificationFactories';\nimport { timeoutProvider } from './scheduler/timeoutProvider';\nimport { captureError } from './util/errorContext';\nvar Subscriber = (function (_super) {\n __extends(Subscriber, _super);\n function Subscriber(destination) {\n var _this = _super.call(this) || this;\n _this.isStopped = false;\n if (destination) {\n _this.destination = destination;\n if (isSubscription(destination)) {\n destination.add(_this);\n }\n }\n else {\n _this.destination = EMPTY_OBSERVER;\n }\n return _this;\n }\n Subscriber.create = function (next, error, complete) {\n return new SafeSubscriber(next, error, complete);\n };\n Subscriber.prototype.next = function (value) {\n if (this.isStopped) {\n handleStoppedNotification(nextNotification(value), this);\n }\n else {\n this._next(value);\n }\n };\n Subscriber.prototype.error = function (err) {\n if (this.isStopped) {\n handleStoppedNotification(errorNotification(err), this);\n }\n else {\n this.isStopped = true;\n this._error(err);\n }\n };\n Subscriber.prototype.complete = function () {\n if (this.isStopped) {\n handleStoppedNotification(COMPLETE_NOTIFICATION, this);\n }\n else {\n this.isStopped = true;\n this._complete();\n }\n };\n Subscriber.prototype.unsubscribe = function () {\n if (!this.closed) {\n this.isStopped = true;\n _super.prototype.unsubscribe.call(this);\n this.destination = null;\n }\n };\n Subscriber.prototype._next = function (value) {\n this.destination.next(value);\n };\n Subscriber.prototype._error = function (err) {\n try {\n this.destination.error(err);\n }\n finally {\n this.unsubscribe();\n }\n };\n Subscriber.prototype._complete = function () {\n try {\n this.destination.complete();\n }\n finally {\n this.unsubscribe();\n }\n };\n return Subscriber;\n}(Subscription));\nexport { Subscriber };\nvar _bind = Function.prototype.bind;\nfunction bind(fn, thisArg) {\n return _bind.call(fn, thisArg);\n}\nvar ConsumerObserver = (function () {\n function ConsumerObserver(partialObserver) {\n this.partialObserver = partialObserver;\n }\n ConsumerObserver.prototype.next = function (value) {\n var partialObserver = this.partialObserver;\n if (partialObserver.next) {\n try {\n partialObserver.next(value);\n }\n catch (error) {\n handleUnhandledError(error);\n }\n }\n };\n ConsumerObserver.prototype.error = function (err) {\n var partialObserver = this.partialObserver;\n if (partialObserver.error) {\n try {\n partialObserver.error(err);\n }\n catch (error) {\n handleUnhandledError(error);\n }\n }\n else {\n handleUnhandledError(err);\n }\n };\n ConsumerObserver.prototype.complete = function () {\n var partialObserver = this.partialObserver;\n if (partialObserver.complete) {\n try {\n partialObserver.complete();\n }\n catch (error) {\n handleUnhandledError(error);\n }\n }\n };\n return ConsumerObserver;\n}());\nvar SafeSubscriber = (function (_super) {\n __extends(SafeSubscriber, _super);\n function SafeSubscriber(observerOrNext, error, complete) {\n var _this = _super.call(this) || this;\n var partialObserver;\n if (isFunction(observerOrNext) || !observerOrNext) {\n partialObserver = {\n next: (observerOrNext !== null && observerOrNext !== void 0 ? observerOrNext : undefined),\n error: error !== null && error !== void 0 ? error : undefined,\n complete: complete !== null && complete !== void 0 ? complete : undefined,\n };\n }\n else {\n var context_1;\n if (_this && config.useDeprecatedNextContext) {\n context_1 = Object.create(observerOrNext);\n context_1.unsubscribe = function () { return _this.unsubscribe(); };\n partialObserver = {\n next: observerOrNext.next && bind(observerOrNext.next, context_1),\n error: observerOrNext.error && bind(observerOrNext.error, context_1),\n complete: observerOrNext.complete && bind(observerOrNext.complete, context_1),\n };\n }\n else {\n partialObserver = observerOrNext;\n }\n }\n _this.destination = new ConsumerObserver(partialObserver);\n return _this;\n }\n return SafeSubscriber;\n}(Subscriber));\nexport { SafeSubscriber };\nfunction handleUnhandledError(error) {\n if (config.useDeprecatedSynchronousErrorHandling) {\n captureError(error);\n }\n else {\n reportUnhandledError(error);\n }\n}\nfunction defaultErrorHandler(err) {\n throw err;\n}\nfunction handleStoppedNotification(notification, subscriber) {\n var onStoppedNotification = config.onStoppedNotification;\n onStoppedNotification && timeoutProvider.setTimeout(function () { return onStoppedNotification(notification, subscriber); });\n}\nexport var EMPTY_OBSERVER = {\n closed: true,\n next: noop,\n error: defaultErrorHandler,\n complete: noop,\n};\n//# sourceMappingURL=Subscriber.js.map","import { __extends } from \"tslib\";\nimport { Subscriber } from '../Subscriber';\nexport function createOperatorSubscriber(destination, onNext, onComplete, onError, onFinalize) {\n return new OperatorSubscriber(destination, onNext, onComplete, onError, onFinalize);\n}\nvar OperatorSubscriber = (function (_super) {\n __extends(OperatorSubscriber, _super);\n function OperatorSubscriber(destination, onNext, onComplete, onError, onFinalize, shouldUnsubscribe) {\n var _this = _super.call(this, destination) || this;\n _this.onFinalize = onFinalize;\n _this.shouldUnsubscribe = shouldUnsubscribe;\n _this._next = onNext\n ? function (value) {\n try {\n onNext(value);\n }\n catch (err) {\n destination.error(err);\n }\n }\n : _super.prototype._next;\n _this._error = onError\n ? function (err) {\n try {\n onError(err);\n }\n catch (err) {\n destination.error(err);\n }\n finally {\n this.unsubscribe();\n }\n }\n : _super.prototype._error;\n _this._complete = onComplete\n ? function () {\n try {\n onComplete();\n }\n catch (err) {\n destination.error(err);\n }\n finally {\n this.unsubscribe();\n }\n }\n : _super.prototype._complete;\n return _this;\n }\n OperatorSubscriber.prototype.unsubscribe = function () {\n var _a;\n if (!this.shouldUnsubscribe || this.shouldUnsubscribe()) {\n var closed_1 = this.closed;\n _super.prototype.unsubscribe.call(this);\n !closed_1 && ((_a = this.onFinalize) === null || _a === void 0 ? void 0 : _a.call(this));\n }\n };\n return OperatorSubscriber;\n}(Subscriber));\nexport { OperatorSubscriber };\n//# sourceMappingURL=OperatorSubscriber.js.map","import { operate } from '../util/lift';\nimport { createOperatorSubscriber } from './OperatorSubscriber';\nexport function map(project, thisArg) {\n return operate(function (source, subscriber) {\n var index = 0;\n source.subscribe(createOperatorSubscriber(subscriber, function (value) {\n subscriber.next(project.call(thisArg, value, index++));\n }));\n });\n}\n//# sourceMappingURL=map.js.map","export var observable = (function () { return (typeof Symbol === 'function' && Symbol.observable) || '@@observable'; })();\n//# sourceMappingURL=observable.js.map","export function identity(x) {\n return x;\n}\n//# sourceMappingURL=identity.js.map","import { identity } from './identity';\nexport function pipe() {\n var fns = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n fns[_i] = arguments[_i];\n }\n return pipeFromArray(fns);\n}\nexport function pipeFromArray(fns) {\n if (fns.length === 0) {\n return identity;\n }\n if (fns.length === 1) {\n return fns[0];\n }\n return function piped(input) {\n return fns.reduce(function (prev, fn) { return fn(prev); }, input);\n };\n}\n//# sourceMappingURL=pipe.js.map","import { SafeSubscriber, Subscriber } from './Subscriber';\nimport { isSubscription } from './Subscription';\nimport { observable as Symbol_observable } from './symbol/observable';\nimport { pipeFromArray } from './util/pipe';\nimport { config } from './config';\nimport { isFunction } from './util/isFunction';\nimport { errorContext } from './util/errorContext';\nvar Observable = (function () {\n function Observable(subscribe) {\n if (subscribe) {\n this._subscribe = subscribe;\n }\n }\n Observable.prototype.lift = function (operator) {\n var observable = new Observable();\n observable.source = this;\n observable.operator = operator;\n return observable;\n };\n Observable.prototype.subscribe = function (observerOrNext, error, complete) {\n var _this = this;\n var subscriber = isSubscriber(observerOrNext) ? observerOrNext : new SafeSubscriber(observerOrNext, error, complete);\n errorContext(function () {\n var _a = _this, operator = _a.operator, source = _a.source;\n subscriber.add(operator\n ?\n operator.call(subscriber, source)\n : source\n ?\n _this._subscribe(subscriber)\n :\n _this._trySubscribe(subscriber));\n });\n return subscriber;\n };\n Observable.prototype._trySubscribe = function (sink) {\n try {\n return this._subscribe(sink);\n }\n catch (err) {\n sink.error(err);\n }\n };\n Observable.prototype.forEach = function (next, promiseCtor) {\n var _this = this;\n promiseCtor = getPromiseCtor(promiseCtor);\n return new promiseCtor(function (resolve, reject) {\n var subscriber = new SafeSubscriber({\n next: function (value) {\n try {\n next(value);\n }\n catch (err) {\n reject(err);\n subscriber.unsubscribe();\n }\n },\n error: reject,\n complete: resolve,\n });\n _this.subscribe(subscriber);\n });\n };\n Observable.prototype._subscribe = function (subscriber) {\n var _a;\n return (_a = this.source) === null || _a === void 0 ? void 0 : _a.subscribe(subscriber);\n };\n Observable.prototype[Symbol_observable] = function () {\n return this;\n };\n Observable.prototype.pipe = function () {\n var operations = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n operations[_i] = arguments[_i];\n }\n return pipeFromArray(operations)(this);\n };\n Observable.prototype.toPromise = function (promiseCtor) {\n var _this = this;\n promiseCtor = getPromiseCtor(promiseCtor);\n return new promiseCtor(function (resolve, reject) {\n var value;\n _this.subscribe(function (x) { return (value = x); }, function (err) { return reject(err); }, function () { return resolve(value); });\n });\n };\n Observable.create = function (subscribe) {\n return new Observable(subscribe);\n };\n return Observable;\n}());\nexport { Observable };\nfunction getPromiseCtor(promiseCtor) {\n var _a;\n return (_a = promiseCtor !== null && promiseCtor !== void 0 ? promiseCtor : config.Promise) !== null && _a !== void 0 ? _a : Promise;\n}\nfunction isObserver(value) {\n return value && isFunction(value.next) && isFunction(value.error) && isFunction(value.complete);\n}\nfunction isSubscriber(value) {\n return (value && value instanceof Subscriber) || (isObserver(value) && isSubscription(value));\n}\n//# sourceMappingURL=Observable.js.map","export function getSymbolIterator() {\n if (typeof Symbol !== 'function' || !Symbol.iterator) {\n return '@@iterator';\n }\n return Symbol.iterator;\n}\nexport var iterator = getSymbolIterator();\n//# sourceMappingURL=iterator.js.map","import { __asyncValues, __awaiter, __generator, __values } from \"tslib\";\nimport { isArrayLike } from '../util/isArrayLike';\nimport { isPromise } from '../util/isPromise';\nimport { Observable } from '../Observable';\nimport { isInteropObservable } from '../util/isInteropObservable';\nimport { isAsyncIterable } from '../util/isAsyncIterable';\nimport { createInvalidObservableTypeError } from '../util/throwUnobservableError';\nimport { isIterable } from '../util/isIterable';\nimport { isReadableStreamLike, readableStreamLikeToAsyncGenerator } from '../util/isReadableStreamLike';\nimport { isFunction } from '../util/isFunction';\nimport { reportUnhandledError } from '../util/reportUnhandledError';\nimport { observable as Symbol_observable } from '../symbol/observable';\nexport function innerFrom(input) {\n if (input instanceof Observable) {\n return input;\n }\n if (input != null) {\n if (isInteropObservable(input)) {\n return fromInteropObservable(input);\n }\n if (isArrayLike(input)) {\n return fromArrayLike(input);\n }\n if (isPromise(input)) {\n return fromPromise(input);\n }\n if (isAsyncIterable(input)) {\n return fromAsyncIterable(input);\n }\n if (isIterable(input)) {\n return fromIterable(input);\n }\n if (isReadableStreamLike(input)) {\n return fromReadableStreamLike(input);\n }\n }\n throw createInvalidObservableTypeError(input);\n}\nexport function fromInteropObservable(obj) {\n return new Observable(function (subscriber) {\n var obs = obj[Symbol_observable]();\n if (isFunction(obs.subscribe)) {\n return obs.subscribe(subscriber);\n }\n throw new TypeError('Provided object does not correctly implement Symbol.observable');\n });\n}\nexport function fromArrayLike(array) {\n return new Observable(function (subscriber) {\n for (var i = 0; i < array.length && !subscriber.closed; i++) {\n subscriber.next(array[i]);\n }\n subscriber.complete();\n });\n}\nexport function fromPromise(promise) {\n return new Observable(function (subscriber) {\n promise\n .then(function (value) {\n if (!subscriber.closed) {\n subscriber.next(value);\n subscriber.complete();\n }\n }, function (err) { return subscriber.error(err); })\n .then(null, reportUnhandledError);\n });\n}\nexport function fromIterable(iterable) {\n return new Observable(function (subscriber) {\n var e_1, _a;\n try {\n for (var iterable_1 = __values(iterable), iterable_1_1 = iterable_1.next(); !iterable_1_1.done; iterable_1_1 = iterable_1.next()) {\n var value = iterable_1_1.value;\n subscriber.next(value);\n if (subscriber.closed) {\n return;\n }\n }\n }\n catch (e_1_1) { e_1 = { error: e_1_1 }; }\n finally {\n try {\n if (iterable_1_1 && !iterable_1_1.done && (_a = iterable_1.return)) _a.call(iterable_1);\n }\n finally { if (e_1) throw e_1.error; }\n }\n subscriber.complete();\n });\n}\nexport function fromAsyncIterable(asyncIterable) {\n return new Observable(function (subscriber) {\n process(asyncIterable, subscriber).catch(function (err) { return subscriber.error(err); });\n });\n}\nexport function fromReadableStreamLike(readableStream) {\n return fromAsyncIterable(readableStreamLikeToAsyncGenerator(readableStream));\n}\nfunction process(asyncIterable, subscriber) {\n var asyncIterable_1, asyncIterable_1_1;\n var e_2, _a;\n return __awaiter(this, void 0, void 0, function () {\n var value, e_2_1;\n return __generator(this, function (_b) {\n switch (_b.label) {\n case 0:\n _b.trys.push([0, 5, 6, 11]);\n asyncIterable_1 = __asyncValues(asyncIterable);\n _b.label = 1;\n case 1: return [4, asyncIterable_1.next()];\n case 2:\n if (!(asyncIterable_1_1 = _b.sent(), !asyncIterable_1_1.done)) return [3, 4];\n value = asyncIterable_1_1.value;\n subscriber.next(value);\n if (subscriber.closed) {\n return [2];\n }\n _b.label = 3;\n case 3: return [3, 1];\n case 4: return [3, 11];\n case 5:\n e_2_1 = _b.sent();\n e_2 = { error: e_2_1 };\n return [3, 11];\n case 6:\n _b.trys.push([6, , 9, 10]);\n if (!(asyncIterable_1_1 && !asyncIterable_1_1.done && (_a = asyncIterable_1.return))) return [3, 8];\n return [4, _a.call(asyncIterable_1)];\n case 7:\n _b.sent();\n _b.label = 8;\n case 8: return [3, 10];\n case 9:\n if (e_2) throw e_2.error;\n return [7];\n case 10: return [7];\n case 11:\n subscriber.complete();\n return [2];\n }\n });\n });\n}\n//# sourceMappingURL=innerFrom.js.map","import { innerFrom } from '../observable/innerFrom';\nimport { createOperatorSubscriber } from './OperatorSubscriber';\nimport { operate } from '../util/lift';\nexport function catchError(selector) {\n return operate(function (source, subscriber) {\n var innerSub = null;\n var syncUnsub = false;\n var handledResult;\n innerSub = source.subscribe(createOperatorSubscriber(subscriber, undefined, undefined, function (err) {\n handledResult = innerFrom(selector(err, catchError(selector)(source)));\n if (innerSub) {\n innerSub.unsubscribe();\n innerSub = null;\n handledResult.subscribe(subscriber);\n }\n else {\n syncUnsub = true;\n }\n }));\n if (syncUnsub) {\n innerSub.unsubscribe();\n innerSub = null;\n handledResult.subscribe(subscriber);\n }\n });\n}\n//# sourceMappingURL=catchError.js.map","import { observable as Symbol_observable } from '../symbol/observable';\nimport { isFunction } from './isFunction';\nexport function isInteropObservable(input) {\n return isFunction(input[Symbol_observable]);\n}\n//# sourceMappingURL=isInteropObservable.js.map","export var isArrayLike = (function (x) { return x && typeof x.length === 'number' && typeof x !== 'function'; });\n//# sourceMappingURL=isArrayLike.js.map","import { isFunction } from \"./isFunction\";\nexport function isPromise(value) {\n return isFunction(value === null || value === void 0 ? void 0 : value.then);\n}\n//# sourceMappingURL=isPromise.js.map","import { isFunction } from './isFunction';\nexport function isAsyncIterable(obj) {\n return Symbol.asyncIterator && isFunction(obj === null || obj === void 0 ? void 0 : obj[Symbol.asyncIterator]);\n}\n//# sourceMappingURL=isAsyncIterable.js.map","import { iterator as Symbol_iterator } from '../symbol/iterator';\nimport { isFunction } from './isFunction';\nexport function isIterable(input) {\n return isFunction(input === null || input === void 0 ? void 0 : input[Symbol_iterator]);\n}\n//# sourceMappingURL=isIterable.js.map","import { __asyncGenerator, __await, __generator } from \"tslib\";\nimport { isFunction } from './isFunction';\nexport function readableStreamLikeToAsyncGenerator(readableStream) {\n return __asyncGenerator(this, arguments, function readableStreamLikeToAsyncGenerator_1() {\n var reader, _a, value, done;\n return __generator(this, function (_b) {\n switch (_b.label) {\n case 0:\n reader = readableStream.getReader();\n _b.label = 1;\n case 1:\n _b.trys.push([1, , 9, 10]);\n _b.label = 2;\n case 2:\n if (!true) return [3, 8];\n return [4, __await(reader.read())];\n case 3:\n _a = _b.sent(), value = _a.value, done = _a.done;\n if (!done) return [3, 5];\n return [4, __await(void 0)];\n case 4: return [2, _b.sent()];\n case 5: return [4, __await(value)];\n case 6: return [4, _b.sent()];\n case 7:\n _b.sent();\n return [3, 2];\n case 8: return [3, 10];\n case 9:\n reader.releaseLock();\n return [7];\n case 10: return [2];\n }\n });\n });\n}\nexport function isReadableStreamLike(obj) {\n return isFunction(obj === null || obj === void 0 ? void 0 : obj.getReader);\n}\n//# sourceMappingURL=isReadableStreamLike.js.map","export function createInvalidObservableTypeError(input) {\n return new TypeError(\"You provided \" + (input !== null && typeof input === 'object' ? 'an invalid object' : \"'\" + input + \"'\") + \" where a stream was expected. You can provide an Observable, Promise, ReadableStream, Array, AsyncIterable, or Iterable.\");\n}\n//# sourceMappingURL=throwUnobservableError.js.map","import { getBackendSrv, BackendSrvRequest, FetchResponse } from \"@grafana/runtime\";\nimport {\n DataQueryRequest,\n DataQueryResponse,\n DataSourceApi,\n DataSourceInstanceSettings,\n MutableDataFrame,\n DataFrame,\n FieldType,\n guessFieldTypeFromValue,\n} from '@grafana/data';\nimport { lastValueFrom, of } from 'rxjs';\nimport { catchError, map } from 'rxjs/operators';\nimport { isArray, isNull } from \"lodash\";\n\nimport {\n MyQuery,\n MyDataSourceOptions,\n QueryEditorMode,\n StreamName,\n StreamList,\n StreamSchemaResponse,\n StreamStatsResponse\n} from './types';\nexport class DataSource extends DataSourceApi {\n url: string;\n withCredentials: boolean;\n headers: any;\n defaultEditorMode: QueryEditorMode;\n constructor(instanceSettings: DataSourceInstanceSettings) {\n super(instanceSettings);\n this.url = instanceSettings.url === undefined ? '' : instanceSettings.url;\n this.withCredentials = instanceSettings.withCredentials !== undefined;\n this.defaultEditorMode = instanceSettings.jsonData?.defaultEditorMode ?? \"code\"\n }\n\n async doRequest(query: MyQuery) {\n const routePath = '/api/v1'\n const result = await getBackendSrv().datasourceRequest({\n method: \"GET\",\n url: this.url + routePath + '/readiness',\n params: query,\n })\n return result;\n }\n\n async query(options: DataQueryRequest): Promise {\n options.targets = options.targets.filter((t) => !t.hide);\n if (options.targets.length === 0) {\n return Promise.resolve({ data: [] });\n }\n\n const { range } = options;\n if (!range) {\n return Promise.resolve({ data: [] });\n }\n const start = range!.from;\n const end = range!.to;\n\n const calls = options.targets.map(target => {\n const request = {\n \"query\": target.queryText,\n \"startTime\": start.toISOString(),\n \"endTime\": end.toISOString(),\n \"send_null\": true\n };\n return lastValueFrom(\n this.doFetch({\n url: this.url + '/api/v1/query',\n data: request,\n method: 'POST',\n }).pipe(\n map((response) => {\n return this.arrayToDataFrame(response.data);\n }),\n catchError((err) => {\n return of({ data: [] });\n })\n )\n );\n });\n\n const data = await Promise.all(calls);\n return {\n data,\n };\n }\n\n arrayToDataFrame(array: any[]): DataFrame {\n let dataFrame: MutableDataFrame = new MutableDataFrame();\n\n if (array.length > 0) {\n const fields = Object.keys(array[0]).map(field => {\n return { name: field, type: guessFieldTypeFromValue(array[0][field]) };\n });\n for (const field of fields) {\n // p_timestamp is always a time field present in the log\n // stream as server adds it to the log\n if (field.name.toLowerCase() === 'p_timestamp') {\n field.type = FieldType.time;\n break;\n }\n }\n dataFrame = new MutableDataFrame({ fields });\n }\n\n array.forEach((row) => {\n dataFrame.appendRow(Object.values(row));\n });\n\n return dataFrame;\n }\n\n doFetch(options: BackendSrvRequest) {\n options.withCredentials = this.withCredentials;\n options.headers = this.headers;\n\n return getBackendSrv().fetch(options);\n }\n\n async listStreams(): Promise {\n return lastValueFrom(\n this.doFetch({\n url: this.url + '/api/v1/logstream',\n method: 'GET',\n }).pipe(\n map((response) =>\n isArray(response.data)\n ? response.data\n : []\n ),\n catchError((err) => {\n return of([]);\n }))\n );\n }\n\n async streamStats(streamname: StreamName): Promise {\n if (streamname) {\n return lastValueFrom(\n this.doFetch({\n url: this.url + '/api/v1/logstream/' + streamname.value + '/stats',\n method: 'GET',\n }).pipe(\n map((response) =>\n (typeof response.data === 'object' && !isNull(response.data))\n ? response.data\n : {}\n ),\n catchError((err) => {\n return of({\n status: 'error',\n message: err.statusText\n })\n\n }))\n )\n }\n return {}\n }\n\n async streamSchema(streamname: StreamName): Promise {\n if (streamname) {\n return lastValueFrom(\n this.doFetch({\n url: this.url + '/api/v1/logstream/' + streamname.value + '/schema',\n method: 'GET',\n }).pipe(\n map((response) =>\n (typeof response.data === 'object' && !isNull(response.data))\n ? response.data\n : {}\n ),\n catchError((err) => {\n return of({\n status: 'error',\n message: err.statusText\n })\n\n }))\n )\n }\n return { fields: [] }\n }\n\n async testDatasource() {\n const errorMessageBase = 'Parseable server is not reachable';\n try {\n const response = await lastValueFrom(\n this.doFetch({\n url: this.url + '/api/v1/readiness',\n method: 'GET',\n }).pipe(map((response) => response))\n );\n\n if (response.status === 200) {\n return { status: 'success', message: 'Parseable server is reachable', title: 'Success' };\n }\n\n return {\n message: response.statusText ? response.statusText : errorMessageBase,\n status: 'error',\n title: 'Error',\n };\n } catch (err) {\n if (typeof err === 'string') {\n return {\n status: 'error',\n message: err,\n };\n }\n\n let error = err as FetchResponse;\n let message = error.statusText ?? errorMessageBase;\n if (error.data?.error?.code !== undefined) {\n message += `: ${error.data.error.code}. ${error.data.error.message}`;\n }\n\n return { status: 'error', message, title: 'Error' };\n }\n }\n}\n","import React, { PureComponent } from 'react';\nimport { DataSourceHttpSettings } from '@grafana/ui';\nimport { DataSourcePluginOptionsEditorProps } from '@grafana/data';\nimport { MyDataSourceOptions, MySecureJsonData } from '../types';\n\n//const { SecretFormField, FormField } = LegacyForms;\n\ninterface Props extends DataSourcePluginOptionsEditorProps {}\n\ninterface State {}\n\nexport class ConfigEditor extends PureComponent {\n render() {\n const { onOptionsChange, options } = this.props;\n return (\n
\n \n
\n );\n }\n}\n","import React, { ComponentType, ChangeEvent, useState } from 'react';\nimport { LegacyForms, AsyncSelect, InlineField, InlineFieldRow, SeriesTable, Label} from '@grafana/ui';\nimport { QueryEditorProps, SelectableValue, GraphSeriesValue } from '@grafana/data';\nimport { DataSource } from '../datasource';\nimport { SchemaFields, MyDataSourceOptions, MyQuery } from '../types';\n\nconst { FormField } = LegacyForms;\n\ninterface Props extends QueryEditorProps {\n payload?: string;\n}\n\nexport const QueryEditor: ComponentType = ({ datasource, onChange, onRunQuery, query }) => {\n\n const { queryText } = query;\n //const [stream, setStream] = React.useState>();\n\n const loadAsyncOptions = React.useCallback(() => {\n return datasource.listStreams().then(\n (result) => {\n const stream = result.map((data) => ({ label: data.name, value: data.name }));\n return stream;\n },\n (response) => {\n //setStream({ label: '', value: '' });\n throw new Error(response.statusText);\n }\n );\n }, [datasource]);\n\n const [value, setValue] = useState>();\n const [schema = '', setSchema] = React.useState();\n const [count = '', setEventCount] = React.useState();\n const [jsonsize = '', setJsonSize] = React.useState();\n const [parquetsize = '', setParquetSize] = React.useState();\n const [streamname = '', setStreamName] = React.useState();\n const [time = '', setTime] = React.useState();\n //const [fielder, setFielder] = React.useState();\n\n const loadStreamSchema = React.useCallback((value) => {\n if (value) {\n return datasource.streamSchema(value).then(\n (result) => {\n if (result.fields) {\n const schema = result.fields.map((data: SchemaFields) => (data.name));\n const schemaToText = schema.join(\", \")\n setSchema(schemaToText);\n return schema;\n }\n return schema;\n },\n (response) => {\n throw new Error(response.statusText);\n }\n );\n }\n return '';\n }, [datasource, schema]);\n\n const loadStreamStats = React.useCallback((value) => {\n if (value) {\n return datasource.streamStats(value).then(\n (result) => {\n if (result.ingestion) {\n const count = result.ingestion.count;\n const jsonsize = result.ingestion.size;\n const parquetsize = result.storage?.size;\n const streamname = result.stream;\n const time = result.time;\n setJsonSize(jsonsize);\n setParquetSize(parquetsize);\n setStreamName(streamname);\n setEventCount(count);\n setTime(time);\n return count;\n }\n return count;\n },\n (response) => {\n throw new Error(response.statusText);\n }\n );\n }\n return '';\n }, [datasource, count]);\n\n const onQueryTextChange = (event: ChangeEvent) => {\n onChange({ ...query, queryText: event.target.value });\n };\n\n React.useEffect(() => {\n const getData = setTimeout(() => {\n onRunQuery()\n },\n 2000)\n return () => clearTimeout(getData)\n }, [onRunQuery, queryText])\n\n React.useEffect(() => {\n loadStreamSchema(value)\n }, [loadStreamSchema, value]);\n\n React.useEffect(() => {\n loadStreamStats(value)\n }, [loadStreamStats, value]);\n\n return (\n <>\n \n \n \n \n \n {\n setValue(v);\n }}/>\n \n {/* \n \n */}\n \n\n \n \n \n \n \n\n

\n \n \n );\n};\n","import { DataSourcePlugin } from '@grafana/data';\nimport { DataSource } from './datasource';\nimport { ConfigEditor } from './components/ConfigEditor';\nimport { QueryEditor } from './components/QueryEditor';\nimport { MyQuery, MyDataSourceOptions } from './types';\n\nexport const plugin = new DataSourcePlugin(DataSource)\n .setConfigEditor(ConfigEditor)\n .setQueryEditor(QueryEditor);\n"],"names":["module","exports","__WEBPACK_EXTERNAL_MODULE__305__","__WEBPACK_EXTERNAL_MODULE__545__","__WEBPACK_EXTERNAL_MODULE__388__","__WEBPACK_EXTERNAL_MODULE__980__","__WEBPACK_EXTERNAL_MODULE__650__","__WEBPACK_EXTERNAL_MODULE__177__","__webpack_module_cache__","__webpack_require__","moduleId","cachedModule","undefined","__webpack_modules__","n","getter","__esModule","d","a","definition","key","o","Object","defineProperty","enumerable","get","obj","prop","prototype","hasOwnProperty","call","r","Symbol","toStringTag","value","isFunction","operate","init","source","lift","hasLift","liftedSource","this","err","error","TypeError","extendStatics","b","setPrototypeOf","__proto__","Array","p","__extends","String","__","constructor","create","__generator","thisArg","body","f","y","t","g","_","label","sent","trys","ops","next","verb","iterator","v","op","done","pop","length","push","e","step","__values","s","m","i","__read","ar","__spreadArray","to","from","pack","arguments","l","slice","concat","__await","__asyncGenerator","_arguments","generator","asyncIterator","apply","q","Promise","resume","resolve","then","fulfill","reject","settle","shift","ctorFunc","UnsubscriptionError","errors","instance","Error","stack","message","map","toString","join","name","arrRemove","arr","item","index","indexOf","splice","Subscription","initialTeardown","closed","_parentage","_finalizers","empty","unsubscribe","e_1","_a","e_2","_b","isArray","_parentage_1","_parentage_1_1","remove","e_1_1","return","initialFinalizer","_finalizers_1","_finalizers_1_1","finalizer","execFinalizer","e_2_1","add","teardown","_hasParent","_addParent","parent","includes","_removeParent","EMPTY","isSubscription","config","timeoutProvider","setTimeout","handler","timeout","args","_i","delegate","clearTimeout","handle","reportUnhandledError","noop","COMPLETE_NOTIFICATION","createNotification","kind","context","Subscriber","_super","destination","_this","isStopped","EMPTY_OBSERVER","complete","SafeSubscriber","handleStoppedNotification","nextNotification","_next","_error","_complete","_bind","Function","bind","fn","ConsumerObserver","partialObserver","handleUnhandledError","observerOrNext","context_1","errorThrown","notification","subscriber","onStoppedNotification","createOperatorSubscriber","onNext","onComplete","onError","onFinalize","OperatorSubscriber","shouldUnsubscribe","closed_1","project","subscribe","observable","identity","x","pipeFromArray","fns","input","reduce","prev","Observable","_subscribe","operator","isObserver","cb","isRoot","errorContext","_trySubscribe","sink","forEach","promiseCtor","getPromiseCtor","pipe","operations","toPromise","fromAsyncIterable","asyncIterable","asyncIterable_1","asyncIterable_1_1","P","__asyncValues","fulfilled","rejected","result","process","catch","catchError","selector","handledResult","innerSub","syncUnsub","isInteropObservable","obs","array","promise","isAsyncIterable","isIterable","iterable","iterable_1","iterable_1_1","getReader","isReadableStreamLike","readableStream","reader","read","releaseLock","readableStreamLikeToAsyncGenerator","createInvalidObservableTypeError","innerFrom","DataSource","DataSourceApi","doRequest","query","getBackendSrv","datasourceRequest","method","url","params","options","targets","filter","hide","data","range","start","end","calls","target","request","queryText","toISOString","lastValueFrom","doFetch","response","arrayToDataFrame","of","all","dataFrame","MutableDataFrame","fields","keys","field","type","guessFieldTypeFromValue","toLowerCase","FieldType","row","appendRow","values","withCredentials","headers","fetch","listStreams","streamStats","streamname","isNull","status","statusText","streamSchema","testDatasource","errorMessageBase","title","code","instanceSettings","super","defaultEditorMode","jsonData","ConfigEditor","PureComponent","render","onOptionsChange","props","div","className","DataSourceHttpSettings","defaultUrl","dataSourceConfig","showAccessOptions","onChange","FormField","LegacyForms","plugin","DataSourcePlugin","setConfigEditor","setQueryEditor","datasource","onRunQuery","loadAsyncOptions","React","setValue","useState","schema","setSchema","count","setEventCount","jsonsize","setJsonSize","parquetsize","setParquetSize","setStreamName","time","setTime","loadStreamSchema","schemaToText","loadStreamStats","ingestion","size","storage","stream","getData","InlineFieldRow","InlineField","Label","AsyncSelect","loadOptions","defaultOptions","SeriesTable","series","color","isActive","timestamp","br","labelWidth","inputWidth","event","tooltip"],"sourceRoot":""} \ No newline at end of file diff --git a/releases/parseable-datasource-1.0.2.zip b/releases/parseable-datasource-1.0.2.zip index da84ca68aa52a7200e10c0b39a9e3bf1d9b78149..f1c83b4ff70d942a89d8ace6b7d5fa8a6c82394a 100644 GIT binary patch delta 30560 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 b^v?)_|4I0Dg9;`XSOP?a&Cde9F2?@{G_xQn delta 29837 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

Jn*fk$@= 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 { method: 'POST', }).pipe( map((response) => { - return toDataFrame(response.data); + return this.arrayToDataFrame(response.data); }), catchError((err) => { return of({ data: [] }); @@ -83,6 +86,31 @@ export class DataSource extends DataSourceApi { }; } + arrayToDataFrame(array: any[]): DataFrame { + let dataFrame: MutableDataFrame = new MutableDataFrame(); + + if (array.length > 0) { + const fields = Object.keys(array[0]).map(field => { + return { name: field, type: guessFieldTypeFromValue(array[0][field]) }; + }); + for (const field of fields) { + // p_timestamp is always a time field present in the log + // stream as server adds it to the log + if (field.name.toLowerCase() === 'p_timestamp') { + field.type = FieldType.time; + break; + } + } + dataFrame = new MutableDataFrame({ fields }); + } + + array.forEach((row) => { + dataFrame.appendRow(Object.values(row)); + }); + + return dataFrame; + } + doFetch(options: BackendSrvRequest) { options.withCredentials = this.withCredentials; options.headers = this.headers; From cac595bdde27ef4f98093f3639b0afd47b226ba7 Mon Sep 17 00:00:00 2001 From: Nitish Tiwari Date: Mon, 6 Mar 2023 21:00:49 +0530 Subject: [PATCH 2/2] Fix plugin ID in dashboard --- dist/MANIFEST.txt | 16 ++++++++-------- dist/dashboards/log-view.json | 2 +- releases/parseable-datasource-1.0.2.zip | Bin 1026229 -> 1026233 bytes releases/parseable-datasource-1.0.2.zip.sha1 | 2 +- src/dashboards/log-view.json | 2 +- 5 files changed, 11 insertions(+), 11 deletions(-) diff --git a/dist/MANIFEST.txt b/dist/MANIFEST.txt index a50b36f..cb2dc4f 100644 --- a/dist/MANIFEST.txt +++ b/dist/MANIFEST.txt @@ -9,7 +9,7 @@ Hash: SHA512 "signedByOrgName": "parseable", "plugin": "parseable-parseable-datasource", "version": "1.0.2", - "time": 1678115223502, + "time": 1678116427014, "keyId": "7e4d0c6a708866e7", "files": { "LICENSE": "20b067f86de375aae6db0f283ab2e65de24d537733b89bd58432c101259d84cf", @@ -31,17 +31,17 @@ Hash: SHA512 "stories/assets/flow.svg": "275142c67bb630246cbdfb0fc3493f17dd695544777ec8da852dbbe94976d323", "stories/assets/repo.svg": "fb4ece472009833a03b9f1fbc775f13a010d9432cae3844e8b05710ba028100d", "module.js": "08c7db3293d45747bf8aa5c99a3b6bb9e6a12d48f358b4e034c60ec3f2381f7f", - "dashboards/log-view.json": "7e6003d2b0b2f0913576908a3c76306b21bb8b53b4343eb379d986ee9e7cce34" + "dashboards/log-view.json": "224d921c8a5a4c3ed426de83f8f70ddb6406690687423b15e6e5822190bcb64c" } } -----BEGIN PGP SIGNATURE----- Version: OpenPGP.js v4.10.10 Comment: https://openpgpjs.org -wrgEARMKAAYFAmQGAZcAIQkQfk0ManCIZucWIQTzOyW2kQdOhGNlcPN+TQxq -cIhm5/pMAgYiXLYcAOVRvh3i3kmjGzEjR3hYcLrSLy0rWsOK5Ou81eONwBi3 -xqgI8IR0lodEpL1t4VrbDjgd+NeMFAwJtOJ2XwIJAWXOTuk90ykstI05K2gx -jbHjejkgRJANMdD5FRisT8kM+s7KP1xW7rzzCWZo4iWPGs6KbbOZmjHzJ8Rs -cmyA1V10 -=NkTF +wrcEARMKAAYFAmQGBksAIQkQfk0ManCIZucWIQTzOyW2kQdOhGNlcPN+TQxq +cIhm5xzGAgY8M1HwqILkK/r9A/kbQdqZUMnRwWoqmk/rF0Iy/QZBJwtOxfx/ +1as1g5GpBzNshpJttopD0cQuyjcu89ZFYRWIwAIFFfp1noxjDozs/Dex0yKV +wiwDqSjus2rxBNm3Yw7YSqXNgLymJRC/BnG+3g0MYeK1iKccy9tWqG9iBpuw +Cdjl1Uk= +=aVxm -----END PGP SIGNATURE----- diff --git a/dist/dashboards/log-view.json b/dist/dashboards/log-view.json index ac373c3..60dc642 100644 --- a/dist/dashboards/log-view.json +++ b/dist/dashboards/log-view.json @@ -5,7 +5,7 @@ "label": "Parseable", "description": "", "type": "datasource", - "pluginId": "parseable-datasource", + "pluginId": "parseable-parseable-datasource", "pluginName": "Parseable" } ], diff --git a/releases/parseable-datasource-1.0.2.zip b/releases/parseable-datasource-1.0.2.zip index f1c83b4ff70d942a89d8ace6b7d5fa8a6c82394a..26cd8cf966ffbe8bb1f3f36d07a3fafe4c37023d 100644 GIT binary patch delta 4394 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 IEC3h%3w!DHj{pDw delta 4371 zcmY+Ic|26_9>-_w%W!1hB4Y_Ln2;Z0EM+SpkzLl9EG2t7mh4*$9oyJ4j6FM9GAes^ z3T6EjlBB5Yclvej?cQ@mec8^8#IQ|-WEFe-NPa9^`N z6FvjZcV{$@^X=DZ?g+%JUf^*OqM@f6elz!OuuXy?u}TtN`1rWJnyPo>M}j6}I(nUX zB_|j?TY30u#i!}D;N7YqbA0xFuaWa>)_z`|akl=gZ#?muA>c&IU()hi8)mILd46E| z_;fa@ZSeXzyPC3rm-jY_b*Gu%z-RYg`?a8Yd~TX?%vC|n776jww-jWucaA+ew*${t zbZ5U8HC52eSW<^*WuL2iSQwfw-#MD?KdQE)=OuELOLlmH2iL?)G+)lnUv5bpO7zXa z3Kh95`8tQM-=DeFL}ZPpk@6YhuJ;1HKHP~@sPx*(Ux`1u?e9JQ4oRXotEhrAvSbPs zqka^LW1-^38xe~L4JI@zT4RQKC;nR2-2dBju$o8w!`-lxe!RbTrc>)Ymi8?7JLTfZKEdd0{PmB+MXr z?sl2d&x%5))ba-xmHBFuhU8LYucy(-@r?L!`AM3X79qS?8>ELjh(2w{aWO6xa z_f&ZQ5QX+D={F)$BF`h2O-eh{##0v1VHWg3q~vB@uNI*1PB@z+tD$WlWn^wh6LslH0(VF)`tZ@>3PbshT5&CCVY*2lZcOul z_EDX13jKu%ONVnsOtqH51w}>7Hi(oH>Z`1dQ(^Y~lCInHR@eC_l4m=oM3|8uF)y4q zD3nrdlendaQE=Zb>7Jq@1CyWJRNTp$<6my3CJ%$1#kQpS3eXXTe~pU6pd&CMaknmP zFA$SqmvptV23aI7jH!W+#Vx1DIGVzB`+qX#Wywm^s6BYvU95JGZPiL<=1%ydGpT~F z5@kiW(&UU`oE&F09};73mqwiHw!Fb!(j}so#fU9D5FhB?^q!m83`D=S=Xc|{dGTac zMrQu}f|g$Jon zmFzV|pdBozVFUtFmPbd!Oar;70lzLJo1MI$i7K->_aN0l)d2bY<`{!7m-Mdr2U3c< zwp+%IWN>Y>ecyEv!hjQ(EdxHiR?u0`Ir8?I@Fs2Bupe(-46D(cI82q>Hmnz>dY*pe z6ysX+Iep>8RBAM+!Ah??*5M%7g!5K6eQ@$hyiRyH&s3<6fmLuSg}VMM^3krxNb|668+rZQ*DjSu)V3?Voxouv|-%p5=K+UJ$Tk6BC8LF82Je-CSCpOLV!0Jhg%EYefu;yeapPI$8}wg6H|&o zFWmC84NfrR*t^O(2Y4m*cJ>EIVxSL(y`S5?a>hgN4jPd-c9G+ya&d$cpUxESsy z-D99E%QYF`!xU83{m$WTpe_6SGxoZ5+bvGgW4cM&Y(b$%)986wqpUAvg~+; z^3NX^TLh~3dlnbgd?aQoSMruS)|21dO?f)NI7h6$rWD9sa)q+(z(f_V@ciu7Mk#3a zHiU1kN-VeXwC}j7u>Vw7P>E~+$nS7I`ySHq$I}+DSoNIpd!G+ zzW+jP^Zw9n^lLu4KrSx%I5yFC^HuPRKmqm}0|ZY4lt95a3v|I~D`vQ7H_K`x?V0nZ z^!@Bz(YE`a38^P8x`?1_ZDi`?G>&wMr$DFA+KN~Q4k(bf5tSe97%-$u(sCaHIou>Ux zJ@Q96!wy4_EKX1I`4ngW0nEcAkeXCm3y)2}R6k^;FHN}Ow!lqLOHNW+)~rT}IUZEZ zYpF!Q+dggVj4T93CTcoI6ObeGBSONOeUkVt2T(IjTJZ7NGFsZh`p#L+pw18jgkHHwN1r<)2DfL^s*>dfl_-K>J?RQT+OsqtYXhC)X(U#}?8C zvfSIj()SKQI6PN+Sb5INPwi&D>gE^D>(fx%M7C<~<`%{gjJ2vv!+G|!``R*>sp&o< zMmRUCsXoUY7)6ons>^A|$FRMuCSBpe0+Dx3=EYA58D^w5`s`UCOlcdu?y$+{W_8ub zy_b4u8)&dyYIN!Ll*NxZ}U(L<@! zifO{-4tGlUR-MBx6cW5Ovp>vNmFe!c=xvHoVzu(N@>gz8DfUYL;&5Xj;Z<4B@&OSJ z9y+8?SXUP?%5bViXDUNtjAlyVTsH zz4A{ScdB^1dxr+EB1TwUdncJ|rXD9uj*uCo4@52GP0sqG^0*ib3KRC@OYf+ zSVTz{Yt{4gZ_Rewj8k4jiO7+>Tie&gZi7BSuSF}}$~n3!@_LyzK00~EGH!z++EUvj zM@FRV+j>8BD*=q-o}23Y+~9SS+c~4JeP!2$z7% zy@6}YczncU4O{5x9%0cZNVfJQt}UXN0q@29ZXx3g-cRZ7v7t`#AOnTS$w-+huAOTABA#%s-TUU|L7jN2MQ?hJJQ^~)Oat7P;?|M zyTy^NL-m%)u;-YSWYb`0SZvX^RRc2eU<;cT7$0wU-nDnUd^`0=g|(o%^P6)Ug^C%> ztJxtjHCHCPFgjS?eo|;xkB?&Ii<>v^9v)s)N-K!hLXU>6n1=gB7mnN=1`F)?bTy8r zSx)Gie3gmVcGqzDaJR-F%2ZOLM=vUj_a5gW1LKVv-sDF+FLb4^pM7=hZESP_*kD$! z<-0TB@ev9-BZ2nFn9#%b)|ySfg}r!IQ6X3Tez@^P@JP5e!{%M#6gf^;mfNxQQxCS@ zKHHxS4o=UEUC^^0x>lZu{P~fGVs5s zVF5$-YM1-%{Uw8Js)HW_jMqCgjKL*4_nXTYH)q9C`kbC##1N%>4Wha4lW<7WbL;j| z+5|{3EVi)W&Qz;%$q}LNnQPla;-(1q8b9`pz;^b@GM&h>dNI_3Y}|oscIr=62E|~V z=*Qn&TjE9*>D+P{8na#w=Lt(0t4(SZE8Y8!<2fnX0R*J=DjRBjli<%2uLRXcWwKQc zkHpaTle**iypC;%n_sqVhD4Pkc1Gt%dp}LT(0u9KkArCowIfN!!QH6BeilEa(&u_7 z4f`dOa~{lin|RoB7|lpmW0mtK-~?vz5I*t4gEM=hMr%yPQt+fBQ=>J~_oOKuRWr}N ziE*J^=B@mmxPXpCtmK5hH*4KVpHftpyx`m`>L%kE1`h>wNIeS(M|4nytos$558QVt zcmTc10;Iu6qi;G&{*f zxwn_lNtxD}tqExUGu=jr(KA;+$VS;?Sxo`Vjg3?BGNXQ#J5>#~SC7X%Dpz8^xZrp4zzxgwA5KNd z>ocp%;9&+4TiI&4j?L`-Trr;>`*bSE02?BG<}c-Se`n&3)%w&Xljn@(e6L_Aoz=Q+ zff!E_9SH{;cWu7M(*OCsa!vz^bnS(+zD00q9&IEnpE+Hiyp)k6*+eRDpk%D4+3DMj z8R{slkd6jOm>okqongLz9Z}+MiAi&`Q{e4Yv6?2t#r0e+6w2KCdIHk|ew`28-ZVZ~ z!YW&;34M(u-J8pKXz(ooQ}@05>#>mmoI-%|KV2?Vmjh^1lDk+4o)4UYc=5nA{eN3s z=l~Ds{U_vyoN@sHiV_8AGzSpEttbFceJ+3`|GPkMashsdjm+PHbQTkoUjpz$EO>zC zSE`#wPN#DINulUGfEjvR0?4ok!?^$Hv|%t7*oMYZ{_lJz54cF7UhsP=uz(9PFZ?|f z1C*T)@KVO(D4<0@@|$|%5Dd^#K5!Xs0m&8s0hC=25&unSp|Ju$hZ2SRqxgQ!grO`p z1b$cLTLE-XS0SKDNqgmw0wBf5WaagLs^bcPfEpi@M;BiGQ+fiDECMc3J~R8H0EpR~ zyu8LDa;d%5AJ6w|v>0SbATMCf?T-f_X?Fnl9nSs=sXYFKCm@Mpz?hQH`;P*kief;Y zQq<>vm3RqRk^KHqXMXKG20j8UmH@_r|Mv%Y4F)^+?;R%}QoxGB