diff --git a/8.1.4/button-with-textfield/jest.config.js b/8.1.4/button-with-textfield/jest.config.js new file mode 100644 index 0000000..bcf17c9 --- /dev/null +++ b/8.1.4/button-with-textfield/jest.config.js @@ -0,0 +1,8 @@ +// This file is needed because it is used by vscode and other tools that +// call `jest` directly. However, unless you are doing anything special +// do not edit this file + +const standard = require('@grafana/toolkit/src/config/jest.plugin.config'); + +// This process will use the same config that `yarn test` is using +module.exports = standard.jestConfig(); diff --git a/8.1.4/button-with-textfield/src/SimplePanel.tsx b/8.1.4/button-with-textfield/src/SimplePanel.tsx index b3c3195..5a7cac3 100644 --- a/8.1.4/button-with-textfield/src/SimplePanel.tsx +++ b/8.1.4/button-with-textfield/src/SimplePanel.tsx @@ -2,13 +2,14 @@ import React from 'react'; import { PanelProps } from '@grafana/data'; import { SimpleOptions } from 'types'; import { css, cx } from 'emotion'; -import { stylesFactory, Field, Input, Form, Button } from '@grafana/ui'; +import { Field, Input, Form, Button, IconName } from '@grafana/ui'; interface Props extends PanelProps {} export const SimplePanel: React.FC = ({ options, data, width, height }) => { const styles = getStyles(); + let form; - + let buttonIcon:IconName= "cloud"; interface numberInput { value: number; } @@ -26,9 +27,9 @@ export const SimplePanel: React.FC = ({ options, data, width, height }) = return (
- + - +
); }} @@ -37,27 +38,42 @@ export const SimplePanel: React.FC = ({ options, data, width, height }) = } function FormWithoutInput() { return ( -
{ - console.log(userinput.value); - sendRequest(userinput.value); - }} - > - {({ register, errors }) => { - return ( -
- -
- ); - }} -
+
+
{ + console.log(userinput.value); + sendRequest(userinput.value); + }} + > + {({ register, errors }) => { + return ( +
+ +
+ ); + }} +
+
); } function sendRequest(event: number) { //console.log(event); - fetch(options.url + event).then(response => console.log(response)); + fetch('https://xtovmp55sa.execute-api.us-east-1.amazonaws.com/dev/message/' + options.topic, { + method: 'POST', + mode: 'cors', + headers: { + 'x-api-key': 'fOuygWdtR86db3Y7oZDK95zfj5GODxS58i9xVh8i', + 'Content-Type': 'application/json', + }, + body: JSON.stringify({ operations: options.operation, value: event }), + }).then(response => { + //console.log(response); + if (response.ok) { + console.log("OK OK OK") + } + }); } if (options.showInputField) { @@ -65,31 +81,18 @@ export const SimplePanel: React.FC = ({ options, data, width, height }) = } else { form = ; } - return ( -
- {form} -
- ); + return
{form}
; }; -const getStyles = stylesFactory(() => { +const getStyles = () => { return { wrapper: css` - position: relative; - `, - form: css` - position: relative; - width: auto; - height: 5em; - padding: 2em; + margin: 0; + position: absolute; + top: 50%; + left: 50%; + -ms-transform: translate(-50%, -50%); + transform: translate(-50%, -50%); `, }; -}); +}; diff --git a/8.1.4/button-with-textfield/src/module.ts b/8.1.4/button-with-textfield/src/module.ts index 63c379c..cb94b51 100644 --- a/8.1.4/button-with-textfield/src/module.ts +++ b/8.1.4/button-with-textfield/src/module.ts @@ -16,35 +16,36 @@ export const plugin = new PanelPlugin(SimplePanel).setPanelOption defaultValue: false, }) .addTextInput({ - path: 'url', - name: 'Destination URL', - description: 'The destination URL for the request' + path: 'topic', + name: 'Topic', + description: 'The MQTT topic to post the command to' + }) + .addTextInput({ + path: 'buttonLabel', + name: 'Button Label', + description: 'Label for the button', + defaultValue: 'Button' }) .addNumberInput({ path: 'default', name: 'default number', description: 'a default number for the input' }) - /* .addRadio({ - path: 'seriesCountSize', - defaultValue: 'sm', - name: 'Series counter size', + .addRadio({ + path: 'operation', + defaultValue: 'start', + name: 'Command Operation', settings: { options: [ { - value: 'sm', - label: 'Small', + value: 'start', + label: 'Start' }, { - value: 'md', - label: 'Medium', - }, - { - value: 'lg', - label: 'Large', - }, - ], - }, - showIf: config => config.showSeriesCount, - }); */ + value: 'stop', + label: 'Stop' + } + ] + } + }) }); diff --git a/8.1.4/button-with-textfield/src/types.ts b/8.1.4/button-with-textfield/src/types.ts index 63d207c..7f05d4f 100644 --- a/8.1.4/button-with-textfield/src/types.ts +++ b/8.1.4/button-with-textfield/src/types.ts @@ -1,6 +1,8 @@ export interface SimpleOptions { text: string; showInputField: boolean; - url: string; + topic: string; default: number; + operation: string; + buttonLabel: string; } diff --git a/8.1.4/grafana-iot-sitewise-datasource/CHANGELOG.md b/8.1.4/grafana-iot-sitewise-datasource/CHANGELOG.md new file mode 100644 index 0000000..99289be --- /dev/null +++ b/8.1.4/grafana-iot-sitewise-datasource/CHANGELOG.md @@ -0,0 +1,35 @@ +# Change Log + +All notable changes to this project will be documented in this file. + +## v1.2.4 + +- Add linux/LDAP based authentication for Edge region. + +## v1.2.3 + +- Update `AUTO` aggregation to better select the resolution, and switch to the raw asset property value data when higher than 1m resolution is needed. + +## v1.2.2 + +- Adds resource cache for describe calls in the plugin back-end + +## v1.2.1 + +- Updates shared aws configuration library +- Bumps min version to 7.5 + +## v1.2.0 + +- Shares auth confiuration with cloudwatch +- Bumps min version to 7.4 + +## v1.1.0 + +- Allowing 'Edge' region +- Support nil values in response #82 +- Update aws libraries + +## v1.0.0 + +- Initial Release diff --git a/8.1.4/grafana-iot-sitewise-datasource/LICENSE b/8.1.4/grafana-iot-sitewise-datasource/LICENSE new file mode 100644 index 0000000..261eeb9 --- /dev/null +++ b/8.1.4/grafana-iot-sitewise-datasource/LICENSE @@ -0,0 +1,201 @@ + Apache License + Version 2.0, January 2004 + http://www.apache.org/licenses/ + + TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION + + 1. Definitions. + + "License" shall mean the terms and conditions for use, reproduction, + and distribution as defined by Sections 1 through 9 of this document. + + "Licensor" shall mean the copyright owner or entity authorized by + the copyright owner that is granting the License. + + "Legal Entity" shall mean the union of the acting entity and all + other entities that control, are controlled by, or are under common + control with that entity. For the purposes of this definition, + "control" means (i) the power, direct or indirect, to cause the + direction or management of such entity, whether by contract or + otherwise, or (ii) ownership of fifty percent (50%) or more of the + outstanding shares, or (iii) beneficial ownership of such entity. + + "You" (or "Your") shall mean an individual or Legal Entity + exercising permissions granted by this License. + + "Source" form shall mean the preferred form for making modifications, + including but not limited to software source code, documentation + source, and configuration files. + + "Object" form shall mean any form resulting from mechanical + transformation or translation of a Source form, including but + not limited to compiled object code, generated documentation, + and conversions to other media types. + + "Work" shall mean the work of authorship, whether in Source or + Object form, made available under the License, as indicated by a + copyright notice that is included in or attached to the work + (an example is provided in the Appendix below). + + "Derivative Works" shall mean any work, whether in Source or Object + form, that is based on (or derived from) the Work and for which the + editorial revisions, annotations, elaborations, or other modifications + represent, as a whole, an original work of authorship. For the purposes + of this License, Derivative Works shall not include works that remain + separable from, or merely link (or bind by name) to the interfaces of, + the Work and Derivative Works thereof. + + "Contribution" shall mean any work of authorship, including + the original version of the Work and any modifications or additions + to that Work or Derivative Works thereof, that is intentionally + submitted to Licensor for inclusion in the Work by the copyright owner + or by an individual or Legal Entity authorized to submit on behalf of + the copyright owner. For the purposes of this definition, "submitted" + means any form of electronic, verbal, or written communication sent + to the Licensor or its representatives, including but not limited to + communication on electronic mailing lists, source code control systems, + and issue tracking systems that are managed by, or on behalf of, the + Licensor for the purpose of discussing and improving the Work, but + excluding communication that is conspicuously marked or otherwise + designated in writing by the copyright owner as "Not a Contribution." + + "Contributor" shall mean Licensor and any individual or Legal Entity + on behalf of whom a Contribution has been received by Licensor and + subsequently incorporated within the Work. + + 2. Grant of Copyright License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + copyright license to reproduce, prepare Derivative Works of, + publicly display, publicly perform, sublicense, and distribute the + Work and such Derivative Works in Source or Object form. + + 3. Grant of Patent License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + (except as stated in this section) patent license to make, have made, + use, offer to sell, sell, import, and otherwise transfer the Work, + where such license applies only to those patent claims licensable + by such Contributor that are necessarily infringed by their + Contribution(s) alone or by combination of their Contribution(s) + with the Work to which such Contribution(s) was submitted. If You + institute patent litigation against any entity (including a + cross-claim or counterclaim in a lawsuit) alleging that the Work + or a Contribution incorporated within the Work constitutes direct + or contributory patent infringement, then any patent licenses + granted to You under this License for that Work shall terminate + as of the date such litigation is filed. + + 4. Redistribution. You may reproduce and distribute copies of the + Work or Derivative Works thereof in any medium, with or without + modifications, and in Source or Object form, provided that You + meet the following conditions: + + (a) You must give any other recipients of the Work or + Derivative Works a copy of this License; and + + (b) You must cause any modified files to carry prominent notices + stating that You changed the files; and + + (c) You must retain, in the Source form of any Derivative Works + that You distribute, all copyright, patent, trademark, and + attribution notices from the Source form of the Work, + excluding those notices that do not pertain to any part of + the Derivative Works; and + + (d) If the Work includes a "NOTICE" text file as part of its + distribution, then any Derivative Works that You distribute must + include a readable copy of the attribution notices contained + within such NOTICE file, excluding those notices that do not + pertain to any part of the Derivative Works, in at least one + of the following places: within a NOTICE text file distributed + as part of the Derivative Works; within the Source form or + documentation, if provided along with the Derivative Works; or, + within a display generated by the Derivative Works, if and + wherever such third-party notices normally appear. The contents + of the NOTICE file are for informational purposes only and + do not modify the License. You may add Your own attribution + notices within Derivative Works that You distribute, alongside + or as an addendum to the NOTICE text from the Work, provided + that such additional attribution notices cannot be construed + as modifying the License. + + You may add Your own copyright statement to Your modifications and + may provide additional or different license terms and conditions + for use, reproduction, or distribution of Your modifications, or + for any such Derivative Works as a whole, provided Your use, + reproduction, and distribution of the Work otherwise complies with + the conditions stated in this License. + + 5. Submission of Contributions. Unless You explicitly state otherwise, + any Contribution intentionally submitted for inclusion in the Work + by You to the Licensor shall be under the terms and conditions of + this License, without any additional terms or conditions. + Notwithstanding the above, nothing herein shall supersede or modify + the terms of any separate license agreement you may have executed + with Licensor regarding such Contributions. + + 6. Trademarks. This License does not grant permission to use the trade + names, trademarks, service marks, or product names of the Licensor, + except as required for reasonable and customary use in describing the + origin of the Work and reproducing the content of the NOTICE file. + + 7. Disclaimer of Warranty. Unless required by applicable law or + agreed to in writing, Licensor provides the Work (and each + Contributor provides its Contributions) on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + implied, including, without limitation, any warranties or conditions + of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A + PARTICULAR PURPOSE. You are solely responsible for determining the + appropriateness of using or redistributing the Work and assume any + risks associated with Your exercise of permissions under this License. + + 8. Limitation of Liability. In no event and under no legal theory, + whether in tort (including negligence), contract, or otherwise, + unless required by applicable law (such as deliberate and grossly + negligent acts) or agreed to in writing, shall any Contributor be + liable to You for damages, including any direct, indirect, special, + incidental, or consequential damages of any character arising as a + result of this License or out of the use or inability to use the + Work (including but not limited to damages for loss of goodwill, + work stoppage, computer failure or malfunction, or any and all + other commercial damages or losses), even if such Contributor + has been advised of the possibility of such damages. + + 9. Accepting Warranty or Additional Liability. While redistributing + the Work or Derivative Works thereof, You may choose to offer, + and charge a fee for, acceptance of support, warranty, indemnity, + or other liability obligations and/or rights consistent with this + License. However, in accepting such obligations, You may act only + on Your own behalf and on Your sole responsibility, not on behalf + of any other Contributor, and only if You agree to indemnify, + defend, and hold each Contributor harmless for any liability + incurred by, or claims asserted against, such Contributor by reason + of your accepting any such warranty or additional liability. + + END OF TERMS AND CONDITIONS + + APPENDIX: How to apply the Apache License to your work. + + To apply the Apache License to your work, attach the following + boilerplate notice, with the fields enclosed by brackets "[]" + replaced with your own identifying information. (Don't include + the brackets!) The text should be enclosed in the appropriate + comment syntax for the file format. We also recommend that a + file or class name and description of purpose be included on the + same "printed page" as the copyright notice for easier + identification within third-party archives. + + Copyright [yyyy] [name of copyright owner] + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. diff --git a/8.1.4/grafana-iot-sitewise-datasource/MANIFEST.txt b/8.1.4/grafana-iot-sitewise-datasource/MANIFEST.txt new file mode 100644 index 0000000..f04098c --- /dev/null +++ b/8.1.4/grafana-iot-sitewise-datasource/MANIFEST.txt @@ -0,0 +1,38 @@ + +-----BEGIN PGP SIGNED MESSAGE----- +Hash: SHA512 + +{ + "manifestVersion": "2.0.0", + "signatureType": "grafana", + "signedByOrg": "grafana", + "signedByOrgName": "Grafana Labs", + "plugin": "grafana-iot-sitewise-datasource", + "version": "1.2.4", + "time": 1627496227734, + "keyId": "7e4d0c6a708866e7", + "files": { + "gpx_iot_sitewise_linux_arm": "7486a0ac34d7b6d942358c2e8ce7dc9961016e9697c0d2e79bab3d79c647d678", + "gpx_iot_sitewise_linux_amd64": "40b17f5a2e1222427590bbf114dbc1618934dcee7a63febe78f79dc50e543aca", + "gpx_iot_sitewise_linux_arm64": "7bd221d1ade9dac812ad751fcb3860d8f5e9202e4209c04b2e9aa0c6d5f91d88", + "gpx_iot_sitewise_darwin_arm64": "e3ee48d701167a0f1afb7c451ebea6a8a676fc7d276adfd23e82ab91a40b76c2", + "module.js": "62324066d436b3e7a20ac912fb825dfe055116369faa4303c6dcf62a24ceded0", + "module.js.LICENSE.txt": "0d8f66cd4afb566cb5b7e1540c68f43b939d3eba12ace290f18abc4f4cb53ed0", + "module.js.map": "9042ecc30d7fdf1f8ea905644b1515ce85c56f0c3b1ab310cbecdc976bc65ce5", + "plugin.json": "8c50580c8db5b5983045166c3862868fce96ee6f00043ac12434f7b66a9970b9", + "README.md": "096f9b324bdcc714ae54ed6d70e178f4d7cab2c71032184ffaaa9c3f0715f955", + "LICENSE": "c71d239df91726fc519c6eb72d318ec65820627232b2f796219e87dcf35d0ab4", + "CHANGELOG.md": "569f8bc35f12238cb416941f6511b93b93c1607bc7c400389dc9c13b6e91f88e", + "img/sitewise.svg": "ca70b9ac04ec0f6bb7019b6f9cfe42680913fba45596ed3b27751f30d7f751d1" + } +} +-----BEGIN PGP SIGNATURE----- +Version: OpenPGP.js v4.10.1 +Comment: https://openpgpjs.org + +wqEEARMKAAYFAmEBnyMACgkQfk0ManCIZufF+wIJARHiQ3Q6pDDMm4xE3/pl +IYxbwykkVEGWSu0de0KHBkjGMafR5K52G+oyXa96ldRzsd8MhEArILB2MvNe +NzX0Ftb2Agd7KCQy+jDUeQZMRH20l6dvMkxz8A/iEymqxZwhK1y7ngQhistb +dxVVS5jCWGCV7HDnuGXNw3qzqjh8wit/pAq+kg== +=KcXv +-----END PGP SIGNATURE----- diff --git a/8.1.4/grafana-iot-sitewise-datasource/README.md b/8.1.4/grafana-iot-sitewise-datasource/README.md new file mode 100644 index 0000000..1555d07 --- /dev/null +++ b/8.1.4/grafana-iot-sitewise-datasource/README.md @@ -0,0 +1,68 @@ +# AWS IoT SiteWise Datasource + +This datasource supports reading data from [AWS IoT SiteWise](https://aws.amazon.com/iot-sitewise/) and showing it in a Grafana dashboard. + +## Add the data source + +1. In the side menu under the **Configuration** link, click on **Data Sources**. +1. Click the **Add data source** button. +1. Select **IoT sitewise** in the **Industrial & IoT** section. + +## Authentication + +The IoT SiteWise plugin authentication matches the standard Cloudwatch plugin system. See the [grafana cloudwatch documentation](https://grafana.com/docs/grafana/latest/datasources/cloudwatch/#authentication) for authentication options and setup. + +Once authentication is configured, click "Save and Test" to verify the service is working. Once this is configured, you can specify default values for the configuration. + +## Query editor + +Use the "query type" selector to pick an appropriate query. +![query-editor](https://raw.githubusercontent.com/grafana/iot-sitewise-datasource/main/docs/editor.png) + +Click on the "Explore" button to open an asset/model navigation interface: +![query-editor](https://raw.githubusercontent.com/grafana/iot-sitewise-datasource/main/docs/explorer.png) + +Multiple aggregations can be showin for a single property: +![query-editor](https://raw.githubusercontent.com/grafana/iot-sitewise-datasource/main/docs/editor2.png) + +### Alerting + +Standard grafana alertings is support with this plugin, however note that alert queries may not include template variables. +See the [Alerting](https://grafana.com/docs/grafana/latest/alerting/alerts-overview/) documentation for more on Grafana alerts. + +## Configure the data source with provisioning + +You can configure data sources using config files with Grafana's provisioning system. You can read more about how it works and all the settings you can set for data sources on the [provisioning docs page](https://grafana.com/docs/grafana/latest/administration/provisioning/). + +Here are some provisioning examples for this data source. + +### Using a credentials file + +If you are using Credentials file authentication type, then you should use a credentials file with a config like this. + +```yaml +apiVersion: 1 + +datasources: + - name: IoT Sitewise + type: datasource + jsonData: + authType: credentials + defaultRegion: us-east-1 +``` + +### Using `accessKey` and `secretKey` + +```yaml +apiVersion: 1 + +datasources: + - name: IoT Sitewise + type: datasource + jsonData: + authType: keys + defaultRegion: us-east-1 + secureJsonData: + accessKey: '' + secretKey: '' +``` diff --git a/8.1.4/grafana-iot-sitewise-datasource/gpx_iot_sitewise_darwin_arm64 b/8.1.4/grafana-iot-sitewise-datasource/gpx_iot_sitewise_darwin_arm64 new file mode 100644 index 0000000..639660c Binary files /dev/null and b/8.1.4/grafana-iot-sitewise-datasource/gpx_iot_sitewise_darwin_arm64 differ diff --git a/8.1.4/grafana-iot-sitewise-datasource/gpx_iot_sitewise_linux_amd64 b/8.1.4/grafana-iot-sitewise-datasource/gpx_iot_sitewise_linux_amd64 new file mode 100644 index 0000000..651c8f7 Binary files /dev/null and b/8.1.4/grafana-iot-sitewise-datasource/gpx_iot_sitewise_linux_amd64 differ diff --git a/8.1.4/grafana-iot-sitewise-datasource/gpx_iot_sitewise_linux_arm b/8.1.4/grafana-iot-sitewise-datasource/gpx_iot_sitewise_linux_arm new file mode 100644 index 0000000..eb8e21d Binary files /dev/null and b/8.1.4/grafana-iot-sitewise-datasource/gpx_iot_sitewise_linux_arm differ diff --git a/8.1.4/grafana-iot-sitewise-datasource/gpx_iot_sitewise_linux_arm64 b/8.1.4/grafana-iot-sitewise-datasource/gpx_iot_sitewise_linux_arm64 new file mode 100644 index 0000000..dcd9472 Binary files /dev/null and b/8.1.4/grafana-iot-sitewise-datasource/gpx_iot_sitewise_linux_arm64 differ diff --git a/8.1.4/grafana-iot-sitewise-datasource/img/sitewise.svg b/8.1.4/grafana-iot-sitewise-datasource/img/sitewise.svg new file mode 100644 index 0000000..edf8660 --- /dev/null +++ b/8.1.4/grafana-iot-sitewise-datasource/img/sitewise.svg @@ -0,0 +1,15 @@ + + + + + + + + + + + + + + + diff --git a/8.1.4/grafana-iot-sitewise-datasource/module.js b/8.1.4/grafana-iot-sitewise-datasource/module.js new file mode 100644 index 0000000..81f51f9 --- /dev/null +++ b/8.1.4/grafana-iot-sitewise-datasource/module.js @@ -0,0 +1,3 @@ +/*! For license information please see module.js.LICENSE.txt */ +define(["react","@grafana/ui","@grafana/data","emotion","@grafana/runtime","rxjs"],(function(e,t,n,r,a,o){return function(e){var t={};function n(r){if(t[r])return t[r].exports;var a=t[r]={i:r,l:!1,exports:{}};return e[r].call(a.exports,a,a.exports,n),a.l=!0,a.exports}return n.m=e,n.c=t,n.d=function(e,t,r){n.o(e,t)||Object.defineProperty(e,t,{enumerable:!0,get:r})},n.r=function(e){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},n.t=function(e,t){if(1&t&&(e=n(e)),8&t)return e;if(4&t&&"object"==typeof e&&e&&e.__esModule)return e;var r=Object.create(null);if(n.r(r),Object.defineProperty(r,"default",{enumerable:!0,value:e}),2&t&&"string"!=typeof e)for(var a in e)n.d(r,a,function(t){return e[t]}.bind(null,a));return r},n.n=function(e){var t=e&&e.__esModule?function(){return e.default}:function(){return e};return n.d(t,"a",t),t},n.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},n.p="/",n(n.s=95)}([function(t,n){t.exports=e},function(e,n){e.exports=t},function(e,t){e.exports=n},function(e,t){e.exports=r},function(e,t,n){var r=n(20),a="object"==typeof self&&self&&self.Object===Object&&self,o=r||a||Function("return this")();e.exports=o},function(e,t){e.exports=function(e){var t=typeof e;return null!=e&&("object"==t||"function"==t)}},function(e,t){e.exports=function(e){return null!=e&&"object"==typeof e}},function(e,t,n){var r=n(10)(Object,"create");e.exports=r},function(e,t,n){var r=n(13);e.exports=function(e,t){for(var n=e.length;n--;)if(r(e[n][0],t))return n;return-1}},function(e,t,n){var r=n(77);e.exports=function(e,t){var n=e.__data__;return r(t)?n["string"==typeof t?"string":"hash"]:n.map}},function(e,t,n){var r=n(37),a=n(44);e.exports=function(e,t){var n=a(e,t);return r(n)?n:void 0}},function(e,t,n){var r=n(12),a=n(39),o=n(40),i=r?r.toStringTag:void 0;e.exports=function(e){return null==e?void 0===e?"[object Undefined]":"[object Null]":i&&i in Object(e)?a(e):o(e)}},function(e,t,n){var r=n(4).Symbol;e.exports=r},function(e,t){e.exports=function(e,t){return e===t||e!=e&&t!=t}},function(e,t,n){var r=n(19),a=n(21);e.exports=function(e){return null!=e&&a(e.length)&&!r(e)}},function(e,t){e.exports=a},function(e,t,n){"use strict";e.exports=n(30)},function(e,t,n){var r=n(18),a=n(31),o=n(33);e.exports=function(e,t){return o(a(e,t,r),e+"")}},function(e,t){e.exports=function(e){return e}},function(e,t,n){var r=n(11),a=n(5);e.exports=function(e){if(!a(e))return!1;var t=r(e);return"[object Function]"==t||"[object GeneratorFunction]"==t||"[object AsyncFunction]"==t||"[object Proxy]"==t}},function(e,t,n){(function(t){var n="object"==typeof t&&t&&t.Object===Object&&t;e.exports=n}).call(this,n(38))},function(e,t){e.exports=function(e){return"number"==typeof e&&e>-1&&e%1==0&&e<=9007199254740991}},function(e,t){var n=/^(?:0|[1-9]\d*)$/;e.exports=function(e,t){var r=typeof e;return!!(t=null==t?9007199254740991:t)&&("number"==r||"symbol"!=r&&n.test(e))&&e>-1&&e%1==0&&e2?t[2]:void 0;for(u&&o(t[0],t[1],u)&&(r=1);++n0)&&!(r=o.next()).done;)i.push(r.value)}catch(e){a={error:e}}finally{try{r&&!r.done&&(n=o.return)&&n.call(o)}finally{if(a)throw a.error}}return i}(o.useState((e.standardRegions||c).map(d)),2),E=b[0],A=b[1],I=e.loadRegions,w=e.onOptionsChange,S=e.skipHeader,C=void 0!==S&&S,_=e.skipEndpoint,x=void 0!==_&&_,O=e.options,D=O.jsonData.profile;void 0===D&&(D=O.database);var P=window.grafanaBootData.settings,T=null!==(n=P.awsAllowedAuthProviders)&&void 0!==n?n:[t.AwsAuthType.Default,t.AwsAuthType.Keys,t.AwsAuthType.Credentials],j=null===(r=P.awsAssumeRoleEnabled)||void 0===r||r,N=p.find((function(e){return e.value===O.jsonData.authType}));return o.useEffect((function(){!N&&T.length&&w(u(u({},O),{jsonData:u(u({},O.jsonData),{authType:T[0]})}))}),[N,O,w]),o.useEffect((function(){I&&I().then((function(e){return A(e.map(d))}))}),[I]),i.createElement(s.FieldSet,{label:C?"":"Connection Details","data-testid":"connection-config"},i.createElement(s.InlineField,{label:"Authentication Provider",labelWidth:28,tooltip:"Specify which AWS credentials chain to use."},i.createElement(s.Select,{className:"width-30",value:N,options:p.filter((function(e){return T.includes(e.value)})),defaultValue:O.jsonData.authType,onChange:function(t){l.onUpdateDatasourceJsonDataOptionSelect(e,"authType")(t)}})),"credentials"===O.jsonData.authType&&i.createElement(s.InlineField,{label:"Credentials Profile Name",labelWidth:28,tooltip:"Credentials profile name, as specified in ~/.aws/credentials, leave blank for default."},i.createElement(s.Input,{className:"width-30",placeholder:"default",value:D,onChange:l.onUpdateDatasourceJsonDataOption(e,"profile")})),"keys"===O.jsonData.authType&&i.createElement(i.Fragment,null,i.createElement(s.InlineField,{label:"Access Key ID",labelWidth:28},(null===(a=e.options.secureJsonFields)||void 0===a?void 0:a.accessKey)?i.createElement(s.ButtonGroup,{className:"width-30"},i.createElement(s.Input,{disabled:!0,placeholder:"Configured"}),i.createElement(s.ToolbarButton,{icon:"edit",tooltip:"Edit Access Key ID",type:"button",onClick:l.onUpdateDatasourceResetOption(e,"accessKey")})):i.createElement(s.Input,{className:"width-30",value:null!==(f=null===(h=O.secureJsonData)||void 0===h?void 0:h.accessKey)&&void 0!==f?f:"",onChange:l.onUpdateDatasourceSecureJsonDataOption(e,"accessKey")})),i.createElement(s.InlineField,{label:"Secret Access Key",labelWidth:28},(null===(v=e.options.secureJsonFields)||void 0===v?void 0:v.secretKey)?i.createElement(s.ButtonGroup,{className:"width-30"},i.createElement(s.Input,{disabled:!0,placeholder:"Configured"}),i.createElement(s.ToolbarButton,{icon:"edit",type:"button",tooltip:"Edit Secret Access Key",onClick:l.onUpdateDatasourceResetOption(e,"secretKey")})):i.createElement(s.Input,{className:"width-30",value:null!==(m=null===(y=O.secureJsonData)||void 0===y?void 0:y.secretKey)&&void 0!==m?m:"",onChange:l.onUpdateDatasourceSecureJsonDataOption(e,"secretKey")}))),j&&i.createElement(i.Fragment,null,i.createElement(s.InlineField,{label:"Assume Role ARN",labelWidth:28,tooltip:"Optionally, specify the ARN of a role to assume. Specifying a role here will ensure that the selected authentication provider is used to assume the specified role rather than using the credentials directly. Leave blank if you don't need to assume a role at all"},i.createElement(s.Input,{className:"width-30",placeholder:"arn:aws:iam:*",value:O.jsonData.assumeRoleArn||"",onChange:l.onUpdateDatasourceJsonDataOption(e,"assumeRoleArn")})),i.createElement(s.InlineField,{label:"External ID",labelWidth:28,tooltip:"If you are assuming a role in another account, that has been created with an external ID, specify the external ID here."},i.createElement(s.Input,{className:"width-30",placeholder:"External ID",value:O.jsonData.externalId||"",onChange:l.onUpdateDatasourceJsonDataOption(e,"externalId")}))),!x&&i.createElement(s.InlineField,{label:"Endpoint",labelWidth:28,tooltip:"Optionally, specify a custom endpoint for the service"},i.createElement(s.Input,{className:"width-30",placeholder:null!==(g=e.defaultEndpoint)&&void 0!==g?g:"https://{service}.{region}.amazonaws.com",value:O.jsonData.endpoint||"",onChange:l.onUpdateDatasourceJsonDataOption(e,"endpoint")})),i.createElement(s.InlineField,{label:"Default Region",labelWidth:28,tooltip:"Specify the region, such as for US West (Oregon) use ` us-west-2 ` as the region."},i.createElement(s.Select,{className:"width-30",value:E.find((function(e){return e.value===O.jsonData.defaultRegion})),options:E,defaultValue:O.jsonData.defaultRegion,allowCustomValue:!0,onChange:l.onUpdateDatasourceJsonDataOptionSelect(e,"defaultRegion"),formatCreateLabel:function(e){return"Use region: "+e}})),e.children)},t.awsAuthProviderOptions=p,t.standardRegions=c},function(e,t,n){var r=n(32),a=Math.max;e.exports=function(e,t,n){return t=a(void 0===t?e.length-1:t,0),function(){for(var o=arguments,i=-1,s=a(o.length-t,0),l=Array(s);++i0){if(++t>=800)return arguments[0]}else t=0;return e.apply(void 0,arguments)}}},function(e,t,n){var r=n(13),a=n(14),o=n(22),i=n(5);e.exports=function(e,t,n){if(!i(n))return!1;var s=typeof t;return!!("number"==s?a(n)&&o(t,n.length):"string"==s&&t in n)&&r(n[t],e)}},function(e,t,n){var r=n(48),a=n(56),o=n(14);e.exports=function(e){return o(e)?r(e,!0):a(e)}},function(e,t,n){var r=n(49),a=n(23),o=n(24),i=n(51),s=n(22),l=n(53),u=Object.prototype.hasOwnProperty;e.exports=function(e,t){var n=o(e),c=!n&&a(e),p=!n&&!c&&i(e),d=!n&&!c&&!p&&l(e),h=n||c||p||d,f=h?r(e.length,String):[],v=f.length;for(var y in e)!t&&!u.call(e,y)||h&&("length"==y||p&&("offset"==y||"parent"==y)||d&&("buffer"==y||"byteLength"==y||"byteOffset"==y)||s(y,v))||f.push(y);return f}},function(e,t){e.exports=function(e,t){for(var n=-1,r=Array(e);++n=200&&(p=l,d=!1,t=new r(t));e:for(;++c-1}},function(e,t,n){var r=n(8);e.exports=function(e,t){var n=this.__data__,a=r(n,e);return a<0?(++this.size,n.push([e,t])):n[a][1]=t,this}},function(e,t,n){var r=n(10)(n(4),"Map");e.exports=r},function(e,t,n){var r=n(9);e.exports=function(e){var t=r(this,e).delete(e);return this.size-=t?1:0,t}},function(e,t){e.exports=function(e){var t=typeof e;return"string"==t||"number"==t||"symbol"==t||"boolean"==t?"__proto__"!==e:null===e}},function(e,t,n){var r=n(9);e.exports=function(e){return r(this,e).get(e)}},function(e,t,n){var r=n(9);e.exports=function(e){return r(this,e).has(e)}},function(e,t,n){var r=n(9);e.exports=function(e,t){var n=r(this,e),a=n.size;return n.set(e,t),this.size+=n.size==a?0:1,this}},function(e,t){e.exports=function(e){return this.__data__.set(e,"__lodash_hash_undefined__"),this}},function(e,t){e.exports=function(e){return this.__data__.has(e)}},function(e,t,n){var r=n(84);e.exports=function(e,t){return!!(null==e?0:e.length)&&r(e,t,0)>-1}},function(e,t,n){var r=n(85),a=n(86),o=n(87);e.exports=function(e,t,n){return t==t?o(e,t,n):r(e,a,n)}},function(e,t){e.exports=function(e,t,n,r){for(var a=e.length,o=n+(r?1:-1);r?o--:++o0&&o(c)?n>1?e(c,n-1,o,i,s):r(s,c):i||(s[s.length]=c)}return s}},function(e,t){e.exports=function(e,t){for(var n=-1,r=t.length,a=e.length;++n0&&a[a.length-1])||6!==o[0]&&2!==o[0])){i=0;continue}if(3===o[0]&&(!a||o[1]>a[0]&&o[1]=e.length&&(e=void 0),{value:e&&e[r++],done:!e}}};throw new TypeError(t?"Object is not iterable.":"Symbol.iterator is not defined.")}function c(e,t){var n="function"==typeof Symbol&&e[Symbol.iterator];if(!n)return e;var r,a,o=n.call(e),i=[];try{for(;(void 0===t||t-- >0)&&!(r=o.next()).done;)i.push(r.value)}catch(e){a={error:e}}finally{try{r&&!r.done&&(n=o.return)&&n.call(o)}finally{if(a)throw a.error}}return i}function p(e,t){for(var n=0,r=t.length,a=e.length;n=0})):n;return!i.length&&r?B.a.createElement("div",{key:null==t?void 0:t.id},"No assets match: ",r):B.a.createElement("div",{key:null==t?void 0:t.id},i.map((function(e){return B.a.createElement(he,{asset:e,key:e.id,onInspect:o,onSelect:a})})))};return t?B.a.createElement("div",{className:u.container},B.a.createElement(H.CollapsableSection,{label:c,isOpen:s},p())):p()},ye=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.state={},t.onModelIdChange=function(e){return s(t,void 0,void 0,(function(){var t,n,r;return l(this,(function(a){switch(a.label){case 0:return(t=e.value)?[4,this.props.cache.getAssetsOfType(t)]:[3,2];case 1:return r=a.sent(),[3,3];case 2:r=void 0,a.label=3;case 3:return n=r,this.setState({modelId:t,assets:n}),[2]}}))}))},t.onAssetChanged=function(e){return s(t,void 0,void 0,(function(){return l(this,(function(t){return e&&this.props.onAssetChanged(e),[2]}))}))},t.onSearchChange=function(e){t.setState({search:e.currentTarget.value})},t}return o(t,e),t.prototype.componentDidMount=function(){var e,t;return s(this,void 0,void 0,(function(){var n,r,a,o,i,s;return l(this,(function(l){switch(l.label){case 0:return n=this.props,r=n.asset,a=n.cache,s={},[4,a.getModels()];case 1:return s.models=l.sent(),(o=s).modelId=null!==(e=null==r?void 0:r.model_id)&&void 0!==e?e:null===(t=o.models)||void 0===t?void 0:t.get(0).id,i=o,[4,a.getAssetsOfType(o.modelId)];case 2:return i.assets=l.sent(),this.setState(o),[2]}}))}))},t.prototype.render=function(){var e=this.state,t=e.models,n=e.assets,r=e.modelId,a=e.search;if(!t)return B.a.createElement("div",null,B.a.createElement(H.Spinner,null),"Loading models...");var o=t.map((function(e){return{value:e.id,label:e.name,description:e.description}})),i=o.find((function(e){return e.value===r}));return B.a.createElement(B.a.Fragment,null,B.a.createElement("div",{style:{height:"60vh"}},B.a.createElement("h4",null,"Model:"),B.a.createElement(H.Select,{options:o,value:i||{},onChange:this.onModelIdChange,backspaceRemovesValue:!0,isSearchable:!0,menuPlacement:"bottom"}),B.a.createElement("br",null),B.a.createElement("br",null),B.a.createElement("h4",null,"Assets:"),i&&n?B.a.createElement(B.a.Fragment,null,n.length>2&&B.a.createElement(B.a.Fragment,null,B.a.createElement(H.Input,{css:"",value:a,onChange:this.onSearchChange,placeholder:"search..."}),B.a.createElement("br",null)),B.a.createElement(ve,{search:a,assets:n.toArray(),onSelect:this.onAssetChanged})):B.a.createElement(B.a.Fragment,null,B.a.createElement("p",null),B.a.createElement("h6",null,"No assets found."))))},t}(W.Component),me=Object(H.stylesFactory)((function(e){return{container:Object(pe.css)(se||(se=d(["\n width: 100%;\n height: auto;\n margin-top: 10px;\n "],["\n width: 100%;\n height: auto;\n margin-top: 10px;\n "]))),listItem:Object(pe.css)(le||(le=d(["\n ","\n "],["\n ","\n "])),H.styleMixins.listItem(e))}})),ge=function(e){var t=e.asset,n=e.hierarchy,r=e.children,a=e.cache,o=e.search,i=e.onSelect,u=e.onInspect,p=c(Object(W.useState)(r),2),d=p[0],h=p[1],f=Object(H.useTheme)(),v=me(f);return Object(W.useEffect)((function(){if(!r&&t&&a){s(void 0,void 0,void 0,(function(){var e;return l(this,(function(r){switch(r.label){case 0:return[4,a.getAssociatedAssets(t.id,n.id)];case 1:return e=r.sent(),h(e.toArray()),[2]}}))}))}}),[r,t,a,n.id]),B.a.createElement("div",{key:n.id,className:v.container},B.a.createElement(ve,{search:o,assets:d,listInfo:{id:n.id,description:n.id,name:n.name},onSelect:i,onInspect:u}))},be=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.state={assets:[]},t.getParentInfo=function(e){return s(t,void 0,Promise,(function(){return l(this,(function(t){switch(t.label){case 0:return[4,this.props.cache.getAssociatedAssets(e)];case 1:return[2,q(t.sent())]}}))}))},t.onSetAssetId=function(e){return s(t,void 0,void 0,(function(){return l(this,(function(t){switch(t.label){case 0:return[4,this.setSelectedAssetInfo(e)];case 1:return t.sent(),[2]}}))}))},t.setSelectedAssetInfo=function(e){return s(t,void 0,void 0,(function(){var t,n,r,a;return l(this,(function(o){switch(o.label){case 0:return t=this.props.cache,e?(n=this.setState,r=[i({},this.state)],a={},[4,t.getAssetInfo(e)]):[3,4];case 1:return a.asset=o.sent(),[4,t.getAssetPickerOptions()];case 2:return a.assets=o.sent(),[4,this.getParentInfo(e)];case 3:n.apply(this,[i.apply(void 0,r.concat([(a.parents=o.sent(),a)]))]),o.label=4;case 4:return[2]}}))}))},t.onAssetChange=function(e){return s(t,void 0,void 0,(function(){return l(this,(function(t){switch(t.label){case 0:return[4,this.setSelectedAssetInfo(e.value)];case 1:return t.sent(),[2]}}))}))},t.onAssetSelected=function(e){return s(t,void 0,void 0,(function(){return l(this,(function(t){return e&&this.props.onAssetSelected(e),[2]}))}))},t.onSearchChange=function(e){t.setState({search:e.currentTarget.value})},t.renderHierarchies=function(){var e=t.state,n=e.asset,r=e.search;if(n)return n.hierarchy.length?B.a.createElement(B.a.Fragment,null,B.a.createElement("h5",null," Asset Hierarchies: "),B.a.createElement("div",{style:{height:"40vh",overflow:"auto"}},B.a.createElement(H.Input,{css:"",value:r,onChange:t.onSearchChange,placeholder:"search..."}),B.a.createElement("br",null),n.hierarchy.map((function(e){return B.a.createElement(ge,{key:e.value,hierarchy:{name:e.label,id:e.value},asset:n,search:r,cache:t.props.cache,onInspect:t.onSetAssetId,onSelect:t.onAssetSelected})})))):B.a.createElement("h6",null,"No hierarchies found for asset.")},t.renderParents=function(){var e=t.state.parents;return B.a.createElement(B.a.Fragment,null,B.a.createElement("h5",null," Parents: "),e?B.a.createElement(ve,{listInfo:{id:"",name:"Show Parents",description:""},assets:e,onSelect:t.onAssetSelected,onInspect:t.onSetAssetId,open:!1}):B.a.createElement("h6",null,"No parents found."))},t}return o(t,e),t.prototype.componentDidMount=function(){return s(this,void 0,void 0,(function(){var e,t,n,r,a,o,s,u;return l(this,(function(l){switch(l.label){case 0:return e=this.props,t=e.asset,n=e.cache,t?[4,this.getParentInfo(t.id)]:[3,2];case 1:return a=l.sent(),[3,3];case 2:a=void 0,l.label=3;case 3:return r=a,s=[i({},this.state)],u={asset:t},[4,n.getAssetPickerOptions()];case 4:return o=i.apply(void 0,s.concat([(u.assets=l.sent(),u.parents=r,u)])),this.setState(o),[2]}}))}))},t.prototype.render=function(){var e=this,t=this.state,n=t.asset,r=t.assets,a=n?r.find((function(e){return e.value===n.id})):void 0;return!a&&n&&(a={label:n.name,value:n.id,description:n.arn}),B.a.createElement("div",{style:{height:"60vh"}},n?B.a.createElement(B.a.Fragment,null,B.a.createElement(this.renderParents,null),B.a.createElement("p",null),B.a.createElement("h5",null," Selected Asset: "),B.a.createElement(he,{asset:n,onSelect:function(){return e.onAssetSelected(null==n?void 0:n.id)}})):B.a.createElement(H.Select,{options:r,value:a,onChange:this.onAssetChange,placeholder:"Select an asset",allowCustomValue:!0,isClearable:!0,isSearchable:!0,onCreateOption:this.onSetAssetId,formatCreateLabel:function(e){return"Asset ID: "+e},menuPlacement:"bottom"}),B.a.createElement("br",null),this.renderHierarchies())},t}(W.Component),Ee=function(){return B.a.createElement("div",{className:"modal-header-title"},B.a.createElement(H.Icon,{name:"folder-open",size:"lg"}),B.a.createElement("span",{className:"p-l-1"},"Asset Browser"))},Ae=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.state={isOpen:!1,tab:"Hierarchy"},t.onSelectAsset=function(e){t.props.onAssetChanged(e),t.setState({isOpen:!1})},t}return o(t,e),t.prototype.componentDidMount=function(){return s(this,void 0,void 0,(function(){var e,t,n,r,a,o;return l(this,(function(i){switch(i.label){case 0:return e=this.props,t=e.assetId,n=e.region,r=this.props.datasource.getCache(n),t?[4,r.getAssetInfo(t)]:[3,2];case 1:return o=i.sent(),[3,3];case 2:o=void 0,i.label=3;case 3:return a=o,this.setState({cache:r,asset:a}),[2]}}))}))},t.prototype.componentDidUpdate=function(e){return s(this,void 0,void 0,(function(){var t,n,r,a,o,s;return l(this,(function(l){switch(l.label){case 0:return t=i({},this.state),n=!1,this.props.region!==e.region&&(n=!0,t.cache=this.props.datasource.getCache(this.props.region)),this.props.assetId===e.assetId?[3,4]:(r=this.state.cache,a=this.props.assetId,n=!0,o=t,a?[4,r.getAssetInfo(a)]:[3,2]);case 1:return s=l.sent(),[3,3];case 2:s=void 0,l.label=3;case 3:o.asset=s,l.label=4;case 4:return n&&this.setState(t),[2]}}))}))},t.prototype.renderBody=function(){var e=this.state,t=e.cache,n=e.tab,r=e.asset;if(!t)return B.a.createElement("div",null,B.a.createElement(H.Spinner,null),"Loading...");switch(n){case"Hierarchy":return B.a.createElement(be,{cache:t,asset:r,onAssetSelected:this.onSelectAsset});case"Modal":return B.a.createElement(ye,{cache:t,asset:r,onAssetChanged:this.onSelectAsset})}},t.prototype.render=function(){var e=this,t=this.state,n=t.isOpen,r=t.tab;return B.a.createElement(B.a.Fragment,null,B.a.createElement(H.Button,{variant:"secondary",size:"md",icon:"folder-open",onClick:function(t){return e.setState({isOpen:!0},(function(){}))}},"Explore"),B.a.createElement(H.Modal,{title:B.a.createElement(Ee,null),isOpen:n,onDismiss:function(){return e.setState({isOpen:!1})}},B.a.createElement("div",null,B.a.createElement("div",null,B.a.createElement(H.TabsBar,null,B.a.createElement(H.Tab,{css:!0,label:"Hierarchy",active:"Hierarchy"===r,onChangeTab:function(){return e.setState({tab:"Hierarchy"})}}),B.a.createElement(H.Tab,{css:!0,label:"By Model",active:"Modal"===r,onChangeTab:function(){return e.setState({tab:"Modal"})}})),B.a.createElement(H.TabContent,{style:{maxHeight:"90vh"}},B.a.createElement("div",null,this.renderBody()))))))},t}(W.Component),Ie=n(29),we=n.n(Ie),Se=function(e){return!0},Ce=function(e){return"STRING"!==e.DataType},_e=new r.Registry((function(){return[{id:m.AVERAGE,name:"Average",isValid:Ce},{id:m.COUNT,name:"Count",isValid:Se},{id:m.MAXIMUM,name:"Max",isValid:Ce},{id:m.MINIMUM,name:"Min",isValid:Ce},{id:m.SUM,name:"Sum",isValid:Ce},{id:m.STANDARD_DEVIATION,name:"Stddev",description:"Standard Deviation",isValid:Ce}]})),xe=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.checkInput=function(){var e=t.props,n=e.stats,r=e.allowMultiple,a=e.defaultStat,o=e.onChange,i=_e.list(n);if(i.length!==n.length){var s=i.map((function(e){return e.id}));we()(n,s);o(i.map((function(e){return e.id})))}!r&&n.length>1&&o([n[0]]),a&&n.length<1&&o([a])},t.onSelectionChange=function(e){var n=t.props.onChange;Array.isArray(e)?n(e.map((function(e){return e.value}))):n(e&&e.value?[e.value]:[])},t}return o(t,e),t.prototype.componentDidMount=function(){this.checkInput()},t.prototype.componentDidUpdate=function(e){this.checkInput()},t.prototype.render=function(){var e=this.props,t=e.stats,n=e.allowMultiple,r=e.defaultStat,a=e.className,o=e.menuPlacement,i=e.assetPropInfo,s=_e.selectOptions(t);return i&&"STRING"===i.DataType&&(s.options=_e.list().filter((function(e){return e.isValid(i)}))),B.a.createElement(H.Select,{value:s.current,className:a,isClearable:!r,isMulti:n,isSearchable:!0,options:s.options,onChange:this.onSelectionChange,menuPlacement:o})},t.defaultProps={allowMultiple:!0},t}(W.PureComponent),Oe=[{value:f.ANY,label:"ANY"},{value:f.GOOD,label:"GOOD"},{value:f.BAD,label:"BAD"},{value:f.UNCERTAIN,label:"UNCERTAIN"}],De=[{value:v.ASCENDING,label:"ASCENDING"},{value:v.DESCENDING,label:"DESCENDING"}],Pe=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.onQualityChange=function(e){var n=t.props,r=n.onChange,a=n.query,o=n.onRunQuery;r(i(i({},a),{quality:e.value})),o()},t.onOrderChange=function(e){var n=t.props,r=n.onChange,a=n.query,o=n.onRunQuery;r(i(i({},a),{timeOrdering:e.value})),o()},t.onMaxPageAggregations=function(e){var n=t.props,r=n.onChange,a=n.query,o=n.onRunQuery;r(i(i({},a),{maxPageAggregations:+e.currentTarget.value})),o()},t}return o(t,e),t.prototype.render=function(){var e,t,n=this.props.query;return B.a.createElement(B.a.Fragment,null,B.a.createElement("div",{className:"gf-form"},B.a.createElement(H.InlineField,{label:"Quality",labelWidth:Re},B.a.createElement(H.Select,{width:20,options:Oe,value:null!==(e=Oe.find((function(e){return e.value===n.quality})))&&void 0!==e?e:Oe[0],onChange:this.onQualityChange,isSearchable:!0,menuPlacement:"bottom"})),B.a.createElement(H.InlineField,{label:"Time",labelWidth:8},B.a.createElement(H.Select,{options:De,value:null!==(t=De.find((function(e){return e.value===n.timeOrdering})))&&void 0!==t?t:De[0],onChange:this.onOrderChange,isSearchable:!0,menuPlacement:"bottom"}))))},t}(W.PureComponent),Te=[{value:y.Auto,label:"Auto",description:"Picks a resolution based on the time window. Will switch to raw data if higher than 1m resolution is needed"},{value:y.Min,label:"Minute",description:"1 point every minute"},{value:y.Hour,label:"Hour",description:"1 point every hour"},{value:y.Day,label:"Day",description:"1 point every day"}],je=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.state={assets:[],loading:!0,openModal:!1},t.onAssetChange=function(e){var n=t.props,r=n.onChange,a=n.query,o=n.onRunQuery;r(i(i({},a),{assetId:e.value})),o()},t.onPropertyChange=function(e){var n=t.props,r=n.onChange,a=n.query,o=n.onRunQuery,s=i(i({},a),{propertyId:e.value});if(E(s)&&s.propertyId){var l=re(t.state.asset,s.propertyId);s.aggregates||(s.aggregates=[]),l&&(s.aggregates=s.aggregates.filter((function(e){return _e.get(e).isValid(l)}))),s.aggregates.length||(s.aggregates=[ae(l)])}r(s),o()},t.onSetAssetId=function(e){var n=t.props,r=n.onChange,a=n.query,o=n.onRunQuery;r(i(i({},a),{assetId:e})),o()},t.onSetPropertyId=function(e){var n=t.props,r=n.onChange,a=n.query,o=n.onRunQuery;r(i(i({},a),{propertyId:e})),o()},t.onSetHierarchyId=function(e){var n=t.props,r=n.onChange,a=n.query,o=n.onRunQuery;r(i(i({},a),{hierarchyId:e})),o()},t.onHierarchyIdChange=function(e){var n=t.props,r=n.onChange,a=n.query,o=n.onRunQuery,s=i({},a);b(s)&&(e.value&&e.value.length?s.hierarchyId=e.value:delete s.hierarchyId),r(s),o()},t.onAggregateChange=function(e){var n=t.props,r=n.onChange,a=n.query,o=n.onRunQuery;r(i(i({},a),{aggregates:e})),o()},t.onResolutionChange=function(e){var n=t.props,r=n.onChange,a=n.query,o=n.onRunQuery;r(i(i({},a),{resolution:e.value})),o()},t}return o(t,e),t.prototype.updateInfo=function(){return s(this,void 0,void 0,(function(){var e,t,n,r,a,o,i;return l(this,(function(s){switch(s.label){case 0:if(e=this.props,t=e.query,n=e.datasource,r={loading:!1},a=n.getCache(t.region),!(null==t?void 0:t.assetId))return[3,4];s.label=1;case 1:return s.trys.push([1,3,,4]),o=r,[4,a.getAssetInfo(t.assetId)];case 2:return o.asset=s.sent(),[3,4];case 3:return s.sent(),r.property=void 0,[3,4];case 4:r.property=re(r.asset,t.propertyId),s.label=5;case 5:return s.trys.push([5,7,,8]),i=r,[4,a.getAssetPickerOptions()];case 6:return i.assets=s.sent(),[3,8];case 7:return s.sent(),[3,8];case 8:return this.setState(r),[2]}}))}))},t.prototype.componentDidMount=function(){return s(this,void 0,void 0,(function(){return l(this,(function(e){return this.updateInfo(),[2]}))}))},t.prototype.componentDidUpdate=function(e){var t,n,r;return s(this,void 0,void 0,(function(){var a,o,i,s;return l(this,(function(l){return a=this.props.query,o=(null==a?void 0:a.assetId)!==(null===(t=null==e?void 0:e.query)||void 0===t?void 0:t.assetId),i=(null==a?void 0:a.propertyId)!==(null===(n=null==e?void 0:e.query)||void 0===n?void 0:n.propertyId),s=(null==a?void 0:a.region)!==(null===(r=null==e?void 0:e.query)||void 0===r?void 0:r.region),(o||i||s)&&(a.assetId||s?(this.setState({loading:!0}),this.updateInfo()):this.setState({asset:void 0,property:void 0,loading:!1})),[2]}))}))},t.prototype.renderAggregateRow=function(e){var t,n=this.state.property;return B.a.createElement("div",{className:"gf-form"},B.a.createElement(H.InlineField,{label:"Aggregate",labelWidth:Re,grow:!0},B.a.createElement(xe,{stats:null!==(t=e.aggregates)&&void 0!==t?t:[],onChange:this.onAggregateChange,defaultStat:ae(n),menuPlacement:"bottom"})),B.a.createElement(H.InlineField,{label:"Resolution",labelWidth:10},B.a.createElement(H.Select,{width:18,options:Te,value:Te.find((function(t){return t.value===e.resolution}))||Te[0],onChange:this.onResolutionChange,menuPlacement:"bottom"})))},t.prototype.renderAssociatedAsset=function(e){var t=this.state,n=t.asset,r=t.loading,a=[{value:"",label:"** Parent **"}];n&&a.push.apply(a,p([],c(n.hierarchy)));var o=a.find((function(t){return t.value===e.hierarchyId}));return o||(e.hierarchyId?(o={value:e.hierarchyId,label:"ID: "+e.hierarchyId},a.push(o)):o=a[0]),B.a.createElement("div",{className:"gf-form"},B.a.createElement(H.InlineField,{label:"Show",labelWidth:Re,grow:!0},B.a.createElement(H.Select,{isLoading:r,options:a,value:o,onChange:this.onHierarchyIdChange,placeholder:"Select...",allowCustomValue:!0,backspaceRemovesValue:!0,isClearable:!0,isSearchable:!0,onCreateOption:this.onSetHierarchyId,formatCreateLabel:function(e){return"Hierarchy Id: "+e},menuPlacement:"bottom"})))},t.prototype.render=function(){var e=this.props,t=e.query,n=e.datasource,r=this.state,a=r.loading,o=r.asset,s=r.assets,l=t.assetId?s.find((function(e){return e.value===t.assetId})):void 0;!l&&t.assetId&&(l=a?{label:"loading...",value:t.assetId}:o?{label:o.name,description:t.assetId,value:t.assetId}:{label:"ID: "+t.assetId,value:t.assetId});var u,c=b(t),p=!c&&(t.propertyId||t.assetId),d=p&&o?o.properties:[],f=t.propertyId&&E(t)||(null==(u=t)?void 0:u.queryType)===h.PropertyValueHistory,v=d.find((function(e){return e.Id===t.propertyId}));return!v&&t.propertyId&&(v={value:t.propertyId,label:"ID: "+t.propertyId}),B.a.createElement(B.a.Fragment,null,B.a.createElement("div",{className:"gf-form"},B.a.createElement(H.InlineField,{label:"Asset",labelWidth:Re,grow:!0},B.a.createElement(H.Select,{key:t.region?t.region:"default",isLoading:a,options:s,value:l,onChange:this.onAssetChange,placeholder:"Select an asset",allowCustomValue:!0,isClearable:!0,isSearchable:!0,onCreateOption:this.onSetAssetId,formatCreateLabel:function(e){return"Asset ID: "+e},menuPlacement:"bottom"})),B.a.createElement(Ae,{datasource:n,region:t.region,assetId:t.assetId,onAssetChanged:this.onSetAssetId})),p&&B.a.createElement(B.a.Fragment,null,B.a.createElement("div",{className:"gf-form"},B.a.createElement(H.InlineField,{label:"Property",labelWidth:Re,grow:!0},B.a.createElement(H.Select,{isLoading:a,options:d,value:v,onChange:this.onPropertyChange,placeholder:"Select a property",allowCustomValue:!0,isSearchable:!0,onCreateOption:this.onSetPropertyId,formatCreateLabel:function(e){return"Property ID: "+e},menuPlacement:"bottom"}))),f&&B.a.createElement(B.a.Fragment,null,E(t)&&this.renderAggregateRow(t),B.a.createElement(Pe,i({},this.props)))),c&&this.renderAssociatedAsset(t))},t}(W.PureComponent),Ne={maxPageAggregations:1},Re=14,Me=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.onQueryTypeChange=function(e){var n=t.props,r=n.onChange,a=n.query,o=n.onRunQuery;r(ne(a,e)),o()},t.onRegionChange=function(e){var n=t.props,r=n.onChange,a=n.query,o=n.onRunQuery;r(i(i({},a),{assetId:void 0,propertyId:void 0,region:e.value})),o()},t}return o(t,e),t.prototype.renderQuery=function(e){if(e.queryType){switch(e.queryType){case h.ListAssetModels:return null;case h.ListAssets:return B.a.createElement(ce,i({},this.props,{query:e}));case h.ListAssociatedAssets:case h.PropertyValue:case h.PropertyAggregate:case h.PropertyValueHistory:return B.a.createElement(je,i({},this.props))}return B.a.createElement("div",null,"Missing UI for query type: ",e.queryType)}},t.prototype.render=function(){var e,t=this.props.datasource,n=ee()(this.props.query,Ne),r={label:"Default",desctiption:null===(e=t.options)||void 0===e?void 0:e.defaultRegion,value:void 0},a=n.region?p([r],c($)):$,o=te.find((function(e){return e.value===n.queryType})),i=o?B.a.createElement("div",null,o.description," ",B.a.createElement("br",null),B.a.createElement(H.LinkButton,{href:o.helpURL,target:"_blank"},"API Docs ",B.a.createElement(H.Icon,{name:"external-link-alt"}))):void 0;return B.a.createElement(B.a.Fragment,null,B.a.createElement("div",{className:"gf-form"},B.a.createElement(H.InlineField,{label:"Query type",labelWidth:14,grow:!0,tooltip:i},B.a.createElement(H.Select,{options:te,value:o,onChange:this.onQueryTypeChange,placeholder:"Select query type",menuPlacement:"bottom"})),B.a.createElement(H.InlineField,{label:"Region",labelWidth:14},B.a.createElement(H.Select,{width:18,options:a,value:$.find((function(e){return e.value===n.region}))||r,onChange:this.onRegionChange,backspaceRemovesValue:!0,allowCustomValue:!0,isClearable:!0,menuPlacement:"bottom"}))),this.renderQuery(n))},t}(W.PureComponent);n.d(t,"plugin",(function(){return Fe}));var Fe=new r.DataSourcePlugin(Q).setConfigEditor(X).setMetadataInspector(J).setQueryEditor(Me)}])})); +//# sourceMappingURL=module.js.map \ No newline at end of file diff --git a/8.1.4/grafana-iot-sitewise-datasource/module.js.LICENSE.txt b/8.1.4/grafana-iot-sitewise-datasource/module.js.LICENSE.txt new file mode 100644 index 0000000..c18ab1d --- /dev/null +++ b/8.1.4/grafana-iot-sitewise-datasource/module.js.LICENSE.txt @@ -0,0 +1,14 @@ +/*! ***************************************************************************** +Copyright (c) Microsoft Corporation. + +Permission to use, copy, modify, and/or distribute this software for any +purpose with or without fee is hereby granted. + +THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH +REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY +AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT, +INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM +LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR +OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR +PERFORMANCE OF THIS SOFTWARE. +***************************************************************************** */ diff --git a/8.1.4/grafana-iot-sitewise-datasource/module.js.map b/8.1.4/grafana-iot-sitewise-datasource/module.js.map new file mode 100644 index 0000000..24d1a86 --- /dev/null +++ b/8.1.4/grafana-iot-sitewise-datasource/module.js.map @@ -0,0 +1 @@ +{"version":3,"sources":["webpack:///webpack/bootstrap","webpack:///external \"react\"","webpack:///external \"@grafana/ui\"","webpack:///external \"@grafana/data\"","webpack:///external \"emotion\"","webpack:///../node_modules/lodash/_root.js","webpack:///../node_modules/lodash/isObject.js","webpack:///../node_modules/lodash/isObjectLike.js","webpack:///../node_modules/lodash/_nativeCreate.js","webpack:///../node_modules/lodash/_assocIndexOf.js","webpack:///../node_modules/lodash/_getMapData.js","webpack:///../node_modules/lodash/_getNative.js","webpack:///../node_modules/lodash/_baseGetTag.js","webpack:///../node_modules/lodash/_Symbol.js","webpack:///../node_modules/lodash/eq.js","webpack:///../node_modules/lodash/isArrayLike.js","webpack:///external \"@grafana/runtime\"","webpack:///../node_modules/@grafana/aws-sdk/index.js","webpack:///../node_modules/lodash/_baseRest.js","webpack:///../node_modules/lodash/identity.js","webpack:///../node_modules/lodash/isFunction.js","webpack:///../node_modules/lodash/_freeGlobal.js","webpack:///../node_modules/lodash/isLength.js","webpack:///../node_modules/lodash/_isIndex.js","webpack:///../node_modules/lodash/isArguments.js","webpack:///../node_modules/lodash/isArray.js","webpack:///../node_modules/webpack/buildin/module.js","webpack:///../node_modules/lodash/_baseUnary.js","webpack:///external \"rxjs\"","webpack:///../node_modules/lodash/defaults.js","webpack:///../node_modules/lodash/difference.js","webpack:///../node_modules/@grafana/aws-sdk/dist/index.production.js","webpack:///../node_modules/lodash/_overRest.js","webpack:///../node_modules/lodash/_apply.js","webpack:///../node_modules/lodash/_setToString.js","webpack:///../node_modules/lodash/_baseSetToString.js","webpack:///../node_modules/lodash/constant.js","webpack:///../node_modules/lodash/_defineProperty.js","webpack:///../node_modules/lodash/_baseIsNative.js","webpack:///../node_modules/webpack/buildin/global.js","webpack:///../node_modules/lodash/_getRawTag.js","webpack:///../node_modules/lodash/_objectToString.js","webpack:///../node_modules/lodash/_isMasked.js","webpack:///../node_modules/lodash/_coreJsData.js","webpack:///../node_modules/lodash/_toSource.js","webpack:///../node_modules/lodash/_getValue.js","webpack:///../node_modules/lodash/_shortOut.js","webpack:///../node_modules/lodash/_isIterateeCall.js","webpack:///../node_modules/lodash/keysIn.js","webpack:///../node_modules/lodash/_arrayLikeKeys.js","webpack:///../node_modules/lodash/_baseTimes.js","webpack:///../node_modules/lodash/_baseIsArguments.js","webpack:///../node_modules/lodash/isBuffer.js","webpack:///../node_modules/lodash/stubFalse.js","webpack:///../node_modules/lodash/isTypedArray.js","webpack:///../node_modules/lodash/_baseIsTypedArray.js","webpack:///../node_modules/lodash/_nodeUtil.js","webpack:///../node_modules/lodash/_baseKeysIn.js","webpack:///../node_modules/lodash/_isPrototype.js","webpack:///../node_modules/lodash/_nativeKeysIn.js","webpack:///../node_modules/lodash/_baseDifference.js","webpack:///../node_modules/lodash/_SetCache.js","webpack:///../node_modules/lodash/_MapCache.js","webpack:///../node_modules/lodash/_mapCacheClear.js","webpack:///../node_modules/lodash/_Hash.js","webpack:///../node_modules/lodash/_hashClear.js","webpack:///../node_modules/lodash/_hashDelete.js","webpack:///../node_modules/lodash/_hashGet.js","webpack:///../node_modules/lodash/_hashHas.js","webpack:///../node_modules/lodash/_hashSet.js","webpack:///../node_modules/lodash/_ListCache.js","webpack:///../node_modules/lodash/_listCacheClear.js","webpack:///../node_modules/lodash/_listCacheDelete.js","webpack:///../node_modules/lodash/_listCacheGet.js","webpack:///../node_modules/lodash/_listCacheHas.js","webpack:///../node_modules/lodash/_listCacheSet.js","webpack:///../node_modules/lodash/_Map.js","webpack:///../node_modules/lodash/_mapCacheDelete.js","webpack:///../node_modules/lodash/_isKeyable.js","webpack:///../node_modules/lodash/_mapCacheGet.js","webpack:///../node_modules/lodash/_mapCacheHas.js","webpack:///../node_modules/lodash/_mapCacheSet.js","webpack:///../node_modules/lodash/_setCacheAdd.js","webpack:///../node_modules/lodash/_setCacheHas.js","webpack:///../node_modules/lodash/_arrayIncludes.js","webpack:///../node_modules/lodash/_baseIndexOf.js","webpack:///../node_modules/lodash/_baseFindIndex.js","webpack:///../node_modules/lodash/_baseIsNaN.js","webpack:///../node_modules/lodash/_strictIndexOf.js","webpack:///../node_modules/lodash/_arrayIncludesWith.js","webpack:///../node_modules/lodash/_arrayMap.js","webpack:///../node_modules/lodash/_cacheHas.js","webpack:///../node_modules/lodash/_baseFlatten.js","webpack:///../node_modules/lodash/_arrayPush.js","webpack:///../node_modules/lodash/_isFlattenable.js","webpack:///../node_modules/lodash/isArrayLikeObject.js","webpack:///../node_modules/tslib/tslib.es6.js","webpack:///./types.ts","webpack:///../node_modules/rxjs/node_modules/tslib/tslib.es6.js","webpack:///../node_modules/rxjs/_esm5/internal/util/isFunction.js","webpack:///../node_modules/rxjs/_esm5/internal/config.js","webpack:///../node_modules/rxjs/_esm5/internal/util/hostReportError.js","webpack:///../node_modules/rxjs/_esm5/internal/Observer.js","webpack:///../node_modules/rxjs/_esm5/internal/util/isArray.js","webpack:///../node_modules/rxjs/_esm5/internal/util/UnsubscriptionError.js","webpack:///../node_modules/rxjs/_esm5/internal/Subscription.js","webpack:///../node_modules/rxjs/_esm5/internal/util/isObject.js","webpack:///../node_modules/rxjs/_esm5/internal/symbol/rxSubscriber.js","webpack:///../node_modules/rxjs/_esm5/internal/Subscriber.js","webpack:///../node_modules/rxjs/_esm5/internal/operators/map.js","webpack:///./sitewiseCache.ts","webpack:///./appendFrames.ts","webpack:///./DataSource.ts","webpack:///./requestLooper.ts","webpack:///./components/MetaInspector.tsx","webpack:///./regions.ts","webpack:///./components/ConfigEditor.tsx","webpack:///./queryInfo.ts","webpack:///./components/query/ListAssetsQueryEditor.tsx","webpack:///./common/Card.tsx","webpack:///./components/browser/hierarchy/AssetListItem.tsx","webpack:///./components/browser/hierarchy/AssetList.tsx","webpack:///./components/browser/BrowseModels.tsx","webpack:///./components/browser/hierarchy/AssetHierarchyList.tsx","webpack:///./components/browser/BrowseHierarchy.tsx","webpack:///./components/browser/AssetBrowser.tsx","webpack:///./components/AggregatePicker.tsx","webpack:///./components/query/QualityAndOrderRow.tsx","webpack:///./components/query/PropertyQueryEditor.tsx","webpack:///./components/query/QueryEditor.tsx","webpack:///./module.ts"],"names":["installedModules","__webpack_require__","moduleId","exports","module","i","l","modules","call","m","c","d","name","getter","o","Object","defineProperty","enumerable","get","r","Symbol","toStringTag","value","t","mode","__esModule","ns","create","key","bind","n","object","property","prototype","hasOwnProperty","p","s","__WEBPACK_EXTERNAL_MODULE__0__","__WEBPACK_EXTERNAL_MODULE__1__","__WEBPACK_EXTERNAL_MODULE__2__","__WEBPACK_EXTERNAL_MODULE__3__","freeGlobal","freeSelf","self","root","Function","type","nativeCreate","getNative","eq","array","length","isKeyable","map","data","__data__","baseIsNative","getValue","undefined","getRawTag","objectToString","symToStringTag","other","isFunction","isLength","__WEBPACK_EXTERNAL_MODULE__15__","identity","overRest","setToString","func","start","baseGetTag","isObject","tag","global","reIsUint","test","baseIsArguments","isObjectLike","objectProto","propertyIsEnumerable","isArguments","arguments","isArray","Array","webpackPolyfill","deprecate","paths","children","__WEBPACK_EXTERNAL_MODULE__27__","baseRest","isIterateeCall","keysIn","defaults","sources","index","guard","source","props","propsIndex","propsLength","baseDifference","baseFlatten","isArrayLikeObject","difference","values","e","a","default","assign","apply","this","AwsAuthType","Keys","Credentials","Default","EC2IAMRole","ARN","label","u","ConnectionConfig","h","f","y","v","D","iterator","next","done","push","error","return","useState","standardRegions","w","b","g","loadRegions","A","onOptionsChange","E","skipHeader","I","C","skipEndpoint","x","O","options","R","jsonData","profile","database","S","window","grafanaBootData","settings","T","awsAllowedAuthProviders","j","awsAssumeRoleEnabled","K","find","authType","useEffect","then","createElement","FieldSet","InlineField","labelWidth","tooltip","Select","className","filter","includes","defaultValue","onChange","onUpdateDatasourceJsonDataOptionSelect","Input","placeholder","onUpdateDatasourceJsonDataOption","Fragment","secureJsonFields","accessKey","ButtonGroup","disabled","ToolbarButton","icon","onClick","onUpdateDatasourceResetOption","secureJsonData","onUpdateDatasourceSecureJsonDataOption","secretKey","assumeRoleArn","externalId","defaultEndpoint","endpoint","defaultRegion","allowCustomValue","formatCreateLabel","awsAuthProviderOptions","nativeMax","Math","max","transform","args","otherArgs","thisArg","baseSetToString","shortOut","constant","string","isMasked","toSource","reIsHostCtor","funcProto","funcToString","toString","reIsNative","RegExp","replace","nativeObjectToString","isOwn","unmasked","result","uid","coreJsData","maskSrcKey","exec","keys","IE_PROTO","nativeNow","Date","now","count","lastCalled","stamp","remaining","isArrayLike","isIndex","arrayLikeKeys","baseKeysIn","baseTimes","isBuffer","isTypedArray","inherited","isArr","isArg","isBuff","isType","skipIndexes","String","iteratee","stubFalse","freeExports","nodeType","freeModule","Buffer","baseIsTypedArray","baseUnary","nodeUtil","nodeIsTypedArray","typedArrayTags","freeProcess","process","types","require","binding","isPrototype","nativeKeysIn","isProto","Ctor","constructor","SetCache","arrayIncludes","arrayIncludesWith","arrayMap","cacheHas","comparator","isCommon","valuesLength","outer","computed","valuesIndex","MapCache","setCacheAdd","setCacheHas","add","has","mapCacheClear","mapCacheDelete","mapCacheGet","mapCacheHas","mapCacheSet","entries","clear","entry","set","Hash","ListCache","Map","size","hashClear","hashDelete","hashGet","hashHas","hashSet","listCacheClear","listCacheDelete","listCacheGet","listCacheHas","listCacheSet","assocIndexOf","splice","pop","getMapData","baseIndexOf","baseFindIndex","baseIsNaN","strictIndexOf","fromIndex","predicate","fromRight","cache","arrayPush","isFlattenable","depth","isStrict","offset","spreadableSymbol","isConcatSpreadable","extendStatics","setPrototypeOf","__proto__","__extends","TypeError","__","__assign","__awaiter","_arguments","P","generator","Promise","resolve","reject","fulfilled","step","rejected","__generator","body","_","sent","trys","ops","verb","op","__values","__read","ar","__spreadArray","to","from","il","__makeTemplateObject","cooked","raw","QueryType","SiteWiseQuality","SiteWiseTimeOrder","SiteWiseResolution","AggregateType","isListAssociatedAssetsQuery","q","queryType","ListAssociatedAssets","isAssetPropertyAggregatesQuery","PropertyAggregate","_enable_super_gross_mode_that_will_cause_bad_things","config","hostReportError","err","setTimeout","empty","closed","useDeprecatedSynchronousErrorHandling","complete","UnsubscriptionError","UnsubscriptionErrorImpl","errors","Error","message","join","Subscription","unsubscribe","_parentOrParents","_subscriptions","_ctorUnsubscribe","_unsubscribe","remove","flattenUnsubscriptionErrors","len","sub","concat","teardown","subscription","EMPTY","tmp","indexOf","subscriptions","subscriptionIndex","reduce","errs","rxSubscriber","random","_super","Subscriber","destinationOrNext","_this","syncErrorValue","syncErrorThrown","syncErrorThrowable","isStopped","destination","subscriber","_next","_error","_complete","_unsubscribeAndRecycle","SafeSubscriber","_parentSubscriber","observerOrNext","context","_context","__tryOrSetError","__tryOrUnsub","wrappedComplete","fn","parent","project","lift","MapOperator","subscribe","MapSubscriber","ds","region","assetsById","getAssetInfo","id","runQuery","refId","DescribeAsset","assetId","pipe","res","view","info","properties","JSON","parse","hierarchy","hierarchies","Id","Name","Unit","DataType","description","Alias","frameToAssetInfo","toPromise","getAssetInfoSync","getModels","models","ListAssetModels","getAssetsOfType","modelId","query","ListAssets","topLevelAssets","getAssociatedAssets","hierarchyId","getTopLevelAssets","getAssetPickerOptions","topLevel","asset","arn","assetSummaryToAssetInfo","results","toArray","getSchemaKey","frame","fields","labels","instanceSettings","annotations","DataSource","getCache","filterQuery","PropertyValue","PropertyValueHistory","propertyId","getQueryDisplayText","txt","applyTemplateVariables","scopedVars","templateSrv","maxDataPoints","targets","requestId","counter","request","req","getNextQueries","rsp","meta","custom","nextToken","isLast","prev","byKey","out","field","buffer","addField","old","idx","appendMatchingFrames","onCancel","tracker","nextQueries","fetchStartTime","fetchEndTime","loadingState","Loading","observer","state","Streaming","Done","startTime","renderInfo","resolution","colorIndex","aggregates","agg","render","standardRegionOptions","edgeAuthMethods","onUserChange","event","target","onPasswordChange","edgeAuthPass","onResetPassword","password","renderEdgeConfig","edgeAuthMode","hasEdgeAuth","regions","title","severity","edgeAuthUser","autoComplete","required","onReset","cert","variant","rows","siteWisteQueryTypes","defaultQuery","Auto","AVERAGE","timeOrdering","helpURL","changeQueryType","copy","getAssetProperty","propId","getDefaultAggregate","prop","COUNT","filters","onAssetModelIdChange","sel","onRunQuery","onFilterChange","componentDidMount","datasource","setState","modelIds","currentModel","firstLabelWith","grow","isLoading","isClearable","isSearchable","menuPlacement","logoUrl","actions","ariaLabel","mainClassName","src","onInspect","onSelect","stopPropagation","getStyles","theme","container","listItem","listInfo","assets","search","open","style","renderChildren","lowerSearch","toLowerCase","filtered","isOpen","onModelIdChange","onAssetChanged","onSearchChange","currentTarget","update","model_id","modelOptions","selectedModel","height","backspaceRemovesValue","css","currentChildren","setChildren","getParentInfo","onSetAssetId","setSelectedAssetInfo","parents","onAssetChange","onAssetSelected","renderHierarchies","overflow","renderParents","parentInfo","current","onCreateOption","tab","onSelectAsset","componentDidUpdate","oldProps","shouldUpdate","renderBody","onDismiss","active","onChangeTab","maxHeight","AnyTypeOK","OnlyNumbers","aggReg","isValid","MAXIMUM","MINIMUM","SUM","STANDARD_DEVIATION","checkInput","stats","allowMultiple","defaultStat","list","found","stat","onSelectionChange","item","prevProps","assetPropInfo","select","selectOptions","isMulti","defaultProps","qualities","ANY","GOOD","BAD","UNCERTAIN","ordering","ASCENDING","DESCENDING","onQualityChange","quality","onOrderChange","onMaxPageAggregations","maxPageAggregations","width","resolutions","Min","Hour","Day","loading","openModal","onPropertyChange","onSetPropertyId","onSetHierarchyId","onHierarchyIdChange","onAggregateChange","onResolutionChange","updateInfo","assetChanged","propChanged","regionChanged","renderAggregateRow","renderAssociatedAsset","isAssociatedAssets","showProp","showQuality","currentProperty","queryDefaults","onQueryTypeChange","onRegionChange","renderQuery","desctiption","currentQueryType","queryTooltip","href","setConfigEditor","setMetadataInspector","setQueryEditor"],"mappings":"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","file":"module.js","sourcesContent":[" \t// The module cache\n \tvar installedModules = {};\n\n \t// The require function\n \tfunction __webpack_require__(moduleId) {\n\n \t\t// Check if module is in cache\n \t\tif(installedModules[moduleId]) {\n \t\t\treturn installedModules[moduleId].exports;\n \t\t}\n \t\t// Create a new module (and put it into the cache)\n \t\tvar module = installedModules[moduleId] = {\n \t\t\ti: moduleId,\n \t\t\tl: false,\n \t\t\texports: {}\n \t\t};\n\n \t\t// Execute the module function\n \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n \t\t// Flag the module as loaded\n \t\tmodule.l = true;\n\n \t\t// Return the exports of the module\n \t\treturn module.exports;\n \t}\n\n\n \t// expose the modules object (__webpack_modules__)\n \t__webpack_require__.m = modules;\n\n \t// expose the module cache\n \t__webpack_require__.c = installedModules;\n\n \t// define getter function for harmony exports\n \t__webpack_require__.d = function(exports, name, getter) {\n \t\tif(!__webpack_require__.o(exports, name)) {\n \t\t\tObject.defineProperty(exports, name, { enumerable: true, get: getter });\n \t\t}\n \t};\n\n \t// define __esModule on exports\n \t__webpack_require__.r = function(exports) {\n \t\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n \t\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n \t\t}\n \t\tObject.defineProperty(exports, '__esModule', { value: true });\n \t};\n\n \t// create a fake namespace object\n \t// mode & 1: value is a module id, require it\n \t// mode & 2: merge all properties of value into the ns\n \t// mode & 4: return value when already ns object\n \t// mode & 8|1: behave like require\n \t__webpack_require__.t = function(value, mode) {\n \t\tif(mode & 1) value = __webpack_require__(value);\n \t\tif(mode & 8) return value;\n \t\tif((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;\n \t\tvar ns = Object.create(null);\n \t\t__webpack_require__.r(ns);\n \t\tObject.defineProperty(ns, 'default', { enumerable: true, value: value });\n \t\tif(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));\n \t\treturn ns;\n \t};\n\n \t// getDefaultExport function for compatibility with non-harmony modules\n \t__webpack_require__.n = function(module) {\n \t\tvar getter = module && module.__esModule ?\n \t\t\tfunction getDefault() { return module['default']; } :\n \t\t\tfunction getModuleExports() { return module; };\n \t\t__webpack_require__.d(getter, 'a', getter);\n \t\treturn getter;\n \t};\n\n \t// Object.prototype.hasOwnProperty.call\n \t__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n\n \t// __webpack_public_path__\n \t__webpack_require__.p = \"/\";\n\n\n \t// Load entry module and return exports\n \treturn __webpack_require__(__webpack_require__.s = 95);\n","module.exports = __WEBPACK_EXTERNAL_MODULE__0__;","module.exports = __WEBPACK_EXTERNAL_MODULE__1__;","module.exports = __WEBPACK_EXTERNAL_MODULE__2__;","module.exports = __WEBPACK_EXTERNAL_MODULE__3__;","var freeGlobal = require('./_freeGlobal');\n\n/** Detect free variable `self`. */\nvar freeSelf = typeof self == 'object' && self && self.Object === Object && self;\n\n/** Used as a reference to the global object. */\nvar root = freeGlobal || freeSelf || Function('return this')();\n\nmodule.exports = root;\n","/**\n * Checks if `value` is the\n * [language type](http://www.ecma-international.org/ecma-262/7.0/#sec-ecmascript-language-types)\n * of `Object`. (e.g. arrays, functions, objects, regexes, `new Number(0)`, and `new String('')`)\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an object, else `false`.\n * @example\n *\n * _.isObject({});\n * // => true\n *\n * _.isObject([1, 2, 3]);\n * // => true\n *\n * _.isObject(_.noop);\n * // => true\n *\n * _.isObject(null);\n * // => false\n */\nfunction isObject(value) {\n var type = typeof value;\n return value != null && (type == 'object' || type == 'function');\n}\n\nmodule.exports = isObject;\n","/**\n * Checks if `value` is object-like. A value is object-like if it's not `null`\n * and has a `typeof` result of \"object\".\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is object-like, else `false`.\n * @example\n *\n * _.isObjectLike({});\n * // => true\n *\n * _.isObjectLike([1, 2, 3]);\n * // => true\n *\n * _.isObjectLike(_.noop);\n * // => false\n *\n * _.isObjectLike(null);\n * // => false\n */\nfunction isObjectLike(value) {\n return value != null && typeof value == 'object';\n}\n\nmodule.exports = isObjectLike;\n","var getNative = require('./_getNative');\n\n/* Built-in method references that are verified to be native. */\nvar nativeCreate = getNative(Object, 'create');\n\nmodule.exports = nativeCreate;\n","var eq = require('./eq');\n\n/**\n * Gets the index at which the `key` is found in `array` of key-value pairs.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {*} key The key to search for.\n * @returns {number} Returns the index of the matched value, else `-1`.\n */\nfunction assocIndexOf(array, key) {\n var length = array.length;\n while (length--) {\n if (eq(array[length][0], key)) {\n return length;\n }\n }\n return -1;\n}\n\nmodule.exports = assocIndexOf;\n","var isKeyable = require('./_isKeyable');\n\n/**\n * Gets the data for `map`.\n *\n * @private\n * @param {Object} map The map to query.\n * @param {string} key The reference key.\n * @returns {*} Returns the map data.\n */\nfunction getMapData(map, key) {\n var data = map.__data__;\n return isKeyable(key)\n ? data[typeof key == 'string' ? 'string' : 'hash']\n : data.map;\n}\n\nmodule.exports = getMapData;\n","var baseIsNative = require('./_baseIsNative'),\n getValue = require('./_getValue');\n\n/**\n * Gets the native function at `key` of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {string} key The key of the method to get.\n * @returns {*} Returns the function if it's native, else `undefined`.\n */\nfunction getNative(object, key) {\n var value = getValue(object, key);\n return baseIsNative(value) ? value : undefined;\n}\n\nmodule.exports = getNative;\n","var Symbol = require('./_Symbol'),\n getRawTag = require('./_getRawTag'),\n objectToString = require('./_objectToString');\n\n/** `Object#toString` result references. */\nvar nullTag = '[object Null]',\n undefinedTag = '[object Undefined]';\n\n/** Built-in value references. */\nvar symToStringTag = Symbol ? Symbol.toStringTag : undefined;\n\n/**\n * The base implementation of `getTag` without fallbacks for buggy environments.\n *\n * @private\n * @param {*} value The value to query.\n * @returns {string} Returns the `toStringTag`.\n */\nfunction baseGetTag(value) {\n if (value == null) {\n return value === undefined ? undefinedTag : nullTag;\n }\n return (symToStringTag && symToStringTag in Object(value))\n ? getRawTag(value)\n : objectToString(value);\n}\n\nmodule.exports = baseGetTag;\n","var root = require('./_root');\n\n/** Built-in value references. */\nvar Symbol = root.Symbol;\n\nmodule.exports = Symbol;\n","/**\n * Performs a\n * [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * comparison between two values to determine if they are equivalent.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @returns {boolean} Returns `true` if the values are equivalent, else `false`.\n * @example\n *\n * var object = { 'a': 1 };\n * var other = { 'a': 1 };\n *\n * _.eq(object, object);\n * // => true\n *\n * _.eq(object, other);\n * // => false\n *\n * _.eq('a', 'a');\n * // => true\n *\n * _.eq('a', Object('a'));\n * // => false\n *\n * _.eq(NaN, NaN);\n * // => true\n */\nfunction eq(value, other) {\n return value === other || (value !== value && other !== other);\n}\n\nmodule.exports = eq;\n","var isFunction = require('./isFunction'),\n isLength = require('./isLength');\n\n/**\n * Checks if `value` is array-like. A value is considered array-like if it's\n * not a function and has a `value.length` that's an integer greater than or\n * equal to `0` and less than or equal to `Number.MAX_SAFE_INTEGER`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is array-like, else `false`.\n * @example\n *\n * _.isArrayLike([1, 2, 3]);\n * // => true\n *\n * _.isArrayLike(document.body.children);\n * // => true\n *\n * _.isArrayLike('abc');\n * // => true\n *\n * _.isArrayLike(_.noop);\n * // => false\n */\nfunction isArrayLike(value) {\n return value != null && isLength(value.length) && !isFunction(value);\n}\n\nmodule.exports = isArrayLike;\n","module.exports = __WEBPACK_EXTERNAL_MODULE__15__;","'use strict';\n\nif (process.env.NODE_ENV === 'production') {\n module.exports = require('./dist/index.production.js');\n} else {\n module.exports = require('./dist/index.development.js');\n}\n","var identity = require('./identity'),\n overRest = require('./_overRest'),\n setToString = require('./_setToString');\n\n/**\n * The base implementation of `_.rest` which doesn't validate or coerce arguments.\n *\n * @private\n * @param {Function} func The function to apply a rest parameter to.\n * @param {number} [start=func.length-1] The start position of the rest parameter.\n * @returns {Function} Returns the new function.\n */\nfunction baseRest(func, start) {\n return setToString(overRest(func, start, identity), func + '');\n}\n\nmodule.exports = baseRest;\n","/**\n * This method returns the first argument it receives.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Util\n * @param {*} value Any value.\n * @returns {*} Returns `value`.\n * @example\n *\n * var object = { 'a': 1 };\n *\n * console.log(_.identity(object) === object);\n * // => true\n */\nfunction identity(value) {\n return value;\n}\n\nmodule.exports = identity;\n","var baseGetTag = require('./_baseGetTag'),\n isObject = require('./isObject');\n\n/** `Object#toString` result references. */\nvar asyncTag = '[object AsyncFunction]',\n funcTag = '[object Function]',\n genTag = '[object GeneratorFunction]',\n proxyTag = '[object Proxy]';\n\n/**\n * Checks if `value` is classified as a `Function` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a function, else `false`.\n * @example\n *\n * _.isFunction(_);\n * // => true\n *\n * _.isFunction(/abc/);\n * // => false\n */\nfunction isFunction(value) {\n if (!isObject(value)) {\n return false;\n }\n // The use of `Object#toString` avoids issues with the `typeof` operator\n // in Safari 9 which returns 'object' for typed arrays and other constructors.\n var tag = baseGetTag(value);\n return tag == funcTag || tag == genTag || tag == asyncTag || tag == proxyTag;\n}\n\nmodule.exports = isFunction;\n","/** Detect free variable `global` from Node.js. */\nvar freeGlobal = typeof global == 'object' && global && global.Object === Object && global;\n\nmodule.exports = freeGlobal;\n","/** Used as references for various `Number` constants. */\nvar MAX_SAFE_INTEGER = 9007199254740991;\n\n/**\n * Checks if `value` is a valid array-like length.\n *\n * **Note:** This method is loosely based on\n * [`ToLength`](http://ecma-international.org/ecma-262/7.0/#sec-tolength).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a valid length, else `false`.\n * @example\n *\n * _.isLength(3);\n * // => true\n *\n * _.isLength(Number.MIN_VALUE);\n * // => false\n *\n * _.isLength(Infinity);\n * // => false\n *\n * _.isLength('3');\n * // => false\n */\nfunction isLength(value) {\n return typeof value == 'number' &&\n value > -1 && value % 1 == 0 && value <= MAX_SAFE_INTEGER;\n}\n\nmodule.exports = isLength;\n","/** Used as references for various `Number` constants. */\nvar MAX_SAFE_INTEGER = 9007199254740991;\n\n/** Used to detect unsigned integer values. */\nvar reIsUint = /^(?:0|[1-9]\\d*)$/;\n\n/**\n * Checks if `value` is a valid array-like index.\n *\n * @private\n * @param {*} value The value to check.\n * @param {number} [length=MAX_SAFE_INTEGER] The upper bounds of a valid index.\n * @returns {boolean} Returns `true` if `value` is a valid index, else `false`.\n */\nfunction isIndex(value, length) {\n var type = typeof value;\n length = length == null ? MAX_SAFE_INTEGER : length;\n\n return !!length &&\n (type == 'number' ||\n (type != 'symbol' && reIsUint.test(value))) &&\n (value > -1 && value % 1 == 0 && value < length);\n}\n\nmodule.exports = isIndex;\n","var baseIsArguments = require('./_baseIsArguments'),\n isObjectLike = require('./isObjectLike');\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/** Built-in value references. */\nvar propertyIsEnumerable = objectProto.propertyIsEnumerable;\n\n/**\n * Checks if `value` is likely an `arguments` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an `arguments` object,\n * else `false`.\n * @example\n *\n * _.isArguments(function() { return arguments; }());\n * // => true\n *\n * _.isArguments([1, 2, 3]);\n * // => false\n */\nvar isArguments = baseIsArguments(function() { return arguments; }()) ? baseIsArguments : function(value) {\n return isObjectLike(value) && hasOwnProperty.call(value, 'callee') &&\n !propertyIsEnumerable.call(value, 'callee');\n};\n\nmodule.exports = isArguments;\n","/**\n * Checks if `value` is classified as an `Array` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an array, else `false`.\n * @example\n *\n * _.isArray([1, 2, 3]);\n * // => true\n *\n * _.isArray(document.body.children);\n * // => false\n *\n * _.isArray('abc');\n * // => false\n *\n * _.isArray(_.noop);\n * // => false\n */\nvar isArray = Array.isArray;\n\nmodule.exports = isArray;\n","module.exports = function(module) {\n\tif (!module.webpackPolyfill) {\n\t\tmodule.deprecate = function() {};\n\t\tmodule.paths = [];\n\t\t// module.parent = undefined by default\n\t\tif (!module.children) module.children = [];\n\t\tObject.defineProperty(module, \"loaded\", {\n\t\t\tenumerable: true,\n\t\t\tget: function() {\n\t\t\t\treturn module.l;\n\t\t\t}\n\t\t});\n\t\tObject.defineProperty(module, \"id\", {\n\t\t\tenumerable: true,\n\t\t\tget: function() {\n\t\t\t\treturn module.i;\n\t\t\t}\n\t\t});\n\t\tmodule.webpackPolyfill = 1;\n\t}\n\treturn module;\n};\n","/**\n * The base implementation of `_.unary` without support for storing metadata.\n *\n * @private\n * @param {Function} func The function to cap arguments for.\n * @returns {Function} Returns the new capped function.\n */\nfunction baseUnary(func) {\n return function(value) {\n return func(value);\n };\n}\n\nmodule.exports = baseUnary;\n","module.exports = __WEBPACK_EXTERNAL_MODULE__27__;","var baseRest = require('./_baseRest'),\n eq = require('./eq'),\n isIterateeCall = require('./_isIterateeCall'),\n keysIn = require('./keysIn');\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Assigns own and inherited enumerable string keyed properties of source\n * objects to the destination object for all destination properties that\n * resolve to `undefined`. Source objects are applied from left to right.\n * Once a property is set, additional values of the same property are ignored.\n *\n * **Note:** This method mutates `object`.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Object\n * @param {Object} object The destination object.\n * @param {...Object} [sources] The source objects.\n * @returns {Object} Returns `object`.\n * @see _.defaultsDeep\n * @example\n *\n * _.defaults({ 'a': 1 }, { 'b': 2 }, { 'a': 3 });\n * // => { 'a': 1, 'b': 2 }\n */\nvar defaults = baseRest(function(object, sources) {\n object = Object(object);\n\n var index = -1;\n var length = sources.length;\n var guard = length > 2 ? sources[2] : undefined;\n\n if (guard && isIterateeCall(sources[0], sources[1], guard)) {\n length = 1;\n }\n\n while (++index < length) {\n var source = sources[index];\n var props = keysIn(source);\n var propsIndex = -1;\n var propsLength = props.length;\n\n while (++propsIndex < propsLength) {\n var key = props[propsIndex];\n var value = object[key];\n\n if (value === undefined ||\n (eq(value, objectProto[key]) && !hasOwnProperty.call(object, key))) {\n object[key] = source[key];\n }\n }\n }\n\n return object;\n});\n\nmodule.exports = defaults;\n","var baseDifference = require('./_baseDifference'),\n baseFlatten = require('./_baseFlatten'),\n baseRest = require('./_baseRest'),\n isArrayLikeObject = require('./isArrayLikeObject');\n\n/**\n * Creates an array of `array` values not included in the other given arrays\n * using [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * for equality comparisons. The order and references of result values are\n * determined by the first array.\n *\n * **Note:** Unlike `_.pullAll`, this method returns a new array.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Array\n * @param {Array} array The array to inspect.\n * @param {...Array} [values] The values to exclude.\n * @returns {Array} Returns the new array of filtered values.\n * @see _.without, _.xor\n * @example\n *\n * _.difference([2, 1], [2, 3]);\n * // => [1]\n */\nvar difference = baseRest(function(array, values) {\n return isArrayLikeObject(array)\n ? baseDifference(array, baseFlatten(values, 1, isArrayLikeObject, true))\n : [];\n});\n\nmodule.exports = difference;\n","Object.defineProperty(exports,\"__esModule\",{value:!0});var e,t=require(\"react\"),a=(e=t)&&\"object\"==typeof e&&\"default\"in e?e.default:e,n=require(\"@grafana/ui\"),o=require(\"@grafana/data\"),l=function(){return(l=Object.assign||function(e){for(var t,a=1,n=arguments.length;a0)&&!(n=l.next()).done;)s.push(n.value)}catch(e){o={error:e}}finally{try{n&&!n.done&&(a=l.return)&&a.call(l)}finally{if(o)throw o.error}}return s}(t.useState((e.standardRegions||r).map(u)),2),w=D[0],b=D[1],g=e.loadRegions,A=e.onOptionsChange,E=e.skipHeader,I=void 0!==E&&E,C=e.skipEndpoint,x=void 0!==C&&C,O=e.options,R=O.jsonData.profile;void 0===R&&(R=O.database);var S=window.grafanaBootData.settings,T=null!==(s=S.awsAllowedAuthProviders)&&void 0!==s?s:[exports.AwsAuthType.Default,exports.AwsAuthType.Keys,exports.AwsAuthType.Credentials],j=null===(c=S.awsAssumeRoleEnabled)||void 0===c||c,K=i.find((function(e){return e.value===O.jsonData.authType}));return t.useEffect((function(){!K&&T.length&&A(l(l({},O),{jsonData:l(l({},O.jsonData),{authType:T[0]})}))}),[K,O,A]),t.useEffect((function(){g&&g().then((function(e){return b(e.map(u))}))}),[g]),a.createElement(n.FieldSet,{label:I?\"\":\"Connection Details\",\"data-testid\":\"connection-config\"},a.createElement(n.InlineField,{label:\"Authentication Provider\",labelWidth:28,tooltip:\"Specify which AWS credentials chain to use.\"},a.createElement(n.Select,{className:\"width-30\",value:K,options:i.filter((function(e){return T.includes(e.value)})),defaultValue:O.jsonData.authType,onChange:function(t){o.onUpdateDatasourceJsonDataOptionSelect(e,\"authType\")(t)}})),\"credentials\"===O.jsonData.authType&&a.createElement(n.InlineField,{label:\"Credentials Profile Name\",labelWidth:28,tooltip:\"Credentials profile name, as specified in ~/.aws/credentials, leave blank for default.\"},a.createElement(n.Input,{className:\"width-30\",placeholder:\"default\",value:R,onChange:o.onUpdateDatasourceJsonDataOption(e,\"profile\")})),\"keys\"===O.jsonData.authType&&a.createElement(a.Fragment,null,a.createElement(n.InlineField,{label:\"Access Key ID\",labelWidth:28},(null===(d=e.options.secureJsonFields)||void 0===d?void 0:d.accessKey)?a.createElement(n.ButtonGroup,{className:\"width-30\"},a.createElement(n.Input,{disabled:!0,placeholder:\"Configured\"}),a.createElement(n.ToolbarButton,{icon:\"edit\",tooltip:\"Edit Access Key ID\",type:\"button\",onClick:o.onUpdateDatasourceResetOption(e,\"accessKey\")})):a.createElement(n.Input,{className:\"width-30\",value:null!==(h=null===(p=O.secureJsonData)||void 0===p?void 0:p.accessKey)&&void 0!==h?h:\"\",onChange:o.onUpdateDatasourceSecureJsonDataOption(e,\"accessKey\")})),a.createElement(n.InlineField,{label:\"Secret Access Key\",labelWidth:28},(null===(f=e.options.secureJsonFields)||void 0===f?void 0:f.secretKey)?a.createElement(n.ButtonGroup,{className:\"width-30\"},a.createElement(n.Input,{disabled:!0,placeholder:\"Configured\"}),a.createElement(n.ToolbarButton,{icon:\"edit\",type:\"button\",tooltip:\"Edit Secret Access Key\",onClick:o.onUpdateDatasourceResetOption(e,\"secretKey\")})):a.createElement(n.Input,{className:\"width-30\",value:null!==(y=null===(m=O.secureJsonData)||void 0===m?void 0:m.secretKey)&&void 0!==y?y:\"\",onChange:o.onUpdateDatasourceSecureJsonDataOption(e,\"secretKey\")}))),j&&a.createElement(a.Fragment,null,a.createElement(n.InlineField,{label:\"Assume Role ARN\",labelWidth:28,tooltip:\"Optionally, specify the ARN of a role to assume. Specifying a role here will ensure that the selected authentication provider is used to assume the specified role rather than using the credentials directly. Leave blank if you don't need to assume a role at all\"},a.createElement(n.Input,{className:\"width-30\",placeholder:\"arn:aws:iam:*\",value:O.jsonData.assumeRoleArn||\"\",onChange:o.onUpdateDatasourceJsonDataOption(e,\"assumeRoleArn\")})),a.createElement(n.InlineField,{label:\"External ID\",labelWidth:28,tooltip:\"If you are assuming a role in another account, that has been created with an external ID, specify the external ID here.\"},a.createElement(n.Input,{className:\"width-30\",placeholder:\"External ID\",value:O.jsonData.externalId||\"\",onChange:o.onUpdateDatasourceJsonDataOption(e,\"externalId\")}))),!x&&a.createElement(n.InlineField,{label:\"Endpoint\",labelWidth:28,tooltip:\"Optionally, specify a custom endpoint for the service\"},a.createElement(n.Input,{className:\"width-30\",placeholder:null!==(v=e.defaultEndpoint)&&void 0!==v?v:\"https://{service}.{region}.amazonaws.com\",value:O.jsonData.endpoint||\"\",onChange:o.onUpdateDatasourceJsonDataOption(e,\"endpoint\")})),a.createElement(n.InlineField,{label:\"Default Region\",labelWidth:28,tooltip:\"Specify the region, such as for US West (Oregon) use ` us-west-2 ` as the region.\"},a.createElement(n.Select,{className:\"width-30\",value:w.find((function(e){return e.value===O.jsonData.defaultRegion})),options:w,defaultValue:O.jsonData.defaultRegion,allowCustomValue:!0,onChange:o.onUpdateDatasourceJsonDataOptionSelect(e,\"defaultRegion\"),formatCreateLabel:function(e){return\"Use region: \"+e}})),e.children)},exports.awsAuthProviderOptions=i,exports.standardRegions=r;\n//# sourceMappingURL=index.production.js.map\n","var apply = require('./_apply');\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeMax = Math.max;\n\n/**\n * A specialized version of `baseRest` which transforms the rest array.\n *\n * @private\n * @param {Function} func The function to apply a rest parameter to.\n * @param {number} [start=func.length-1] The start position of the rest parameter.\n * @param {Function} transform The rest array transform.\n * @returns {Function} Returns the new function.\n */\nfunction overRest(func, start, transform) {\n start = nativeMax(start === undefined ? (func.length - 1) : start, 0);\n return function() {\n var args = arguments,\n index = -1,\n length = nativeMax(args.length - start, 0),\n array = Array(length);\n\n while (++index < length) {\n array[index] = args[start + index];\n }\n index = -1;\n var otherArgs = Array(start + 1);\n while (++index < start) {\n otherArgs[index] = args[index];\n }\n otherArgs[start] = transform(array);\n return apply(func, this, otherArgs);\n };\n}\n\nmodule.exports = overRest;\n","/**\n * A faster alternative to `Function#apply`, this function invokes `func`\n * with the `this` binding of `thisArg` and the arguments of `args`.\n *\n * @private\n * @param {Function} func The function to invoke.\n * @param {*} thisArg The `this` binding of `func`.\n * @param {Array} args The arguments to invoke `func` with.\n * @returns {*} Returns the result of `func`.\n */\nfunction apply(func, thisArg, args) {\n switch (args.length) {\n case 0: return func.call(thisArg);\n case 1: return func.call(thisArg, args[0]);\n case 2: return func.call(thisArg, args[0], args[1]);\n case 3: return func.call(thisArg, args[0], args[1], args[2]);\n }\n return func.apply(thisArg, args);\n}\n\nmodule.exports = apply;\n","var baseSetToString = require('./_baseSetToString'),\n shortOut = require('./_shortOut');\n\n/**\n * Sets the `toString` method of `func` to return `string`.\n *\n * @private\n * @param {Function} func The function to modify.\n * @param {Function} string The `toString` result.\n * @returns {Function} Returns `func`.\n */\nvar setToString = shortOut(baseSetToString);\n\nmodule.exports = setToString;\n","var constant = require('./constant'),\n defineProperty = require('./_defineProperty'),\n identity = require('./identity');\n\n/**\n * The base implementation of `setToString` without support for hot loop shorting.\n *\n * @private\n * @param {Function} func The function to modify.\n * @param {Function} string The `toString` result.\n * @returns {Function} Returns `func`.\n */\nvar baseSetToString = !defineProperty ? identity : function(func, string) {\n return defineProperty(func, 'toString', {\n 'configurable': true,\n 'enumerable': false,\n 'value': constant(string),\n 'writable': true\n });\n};\n\nmodule.exports = baseSetToString;\n","/**\n * Creates a function that returns `value`.\n *\n * @static\n * @memberOf _\n * @since 2.4.0\n * @category Util\n * @param {*} value The value to return from the new function.\n * @returns {Function} Returns the new constant function.\n * @example\n *\n * var objects = _.times(2, _.constant({ 'a': 1 }));\n *\n * console.log(objects);\n * // => [{ 'a': 1 }, { 'a': 1 }]\n *\n * console.log(objects[0] === objects[1]);\n * // => true\n */\nfunction constant(value) {\n return function() {\n return value;\n };\n}\n\nmodule.exports = constant;\n","var getNative = require('./_getNative');\n\nvar defineProperty = (function() {\n try {\n var func = getNative(Object, 'defineProperty');\n func({}, '', {});\n return func;\n } catch (e) {}\n}());\n\nmodule.exports = defineProperty;\n","var isFunction = require('./isFunction'),\n isMasked = require('./_isMasked'),\n isObject = require('./isObject'),\n toSource = require('./_toSource');\n\n/**\n * Used to match `RegExp`\n * [syntax characters](http://ecma-international.org/ecma-262/7.0/#sec-patterns).\n */\nvar reRegExpChar = /[\\\\^$.*+?()[\\]{}|]/g;\n\n/** Used to detect host constructors (Safari). */\nvar reIsHostCtor = /^\\[object .+?Constructor\\]$/;\n\n/** Used for built-in method references. */\nvar funcProto = Function.prototype,\n objectProto = Object.prototype;\n\n/** Used to resolve the decompiled source of functions. */\nvar funcToString = funcProto.toString;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/** Used to detect if a method is native. */\nvar reIsNative = RegExp('^' +\n funcToString.call(hasOwnProperty).replace(reRegExpChar, '\\\\$&')\n .replace(/hasOwnProperty|(function).*?(?=\\\\\\()| for .+?(?=\\\\\\])/g, '$1.*?') + '$'\n);\n\n/**\n * The base implementation of `_.isNative` without bad shim checks.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a native function,\n * else `false`.\n */\nfunction baseIsNative(value) {\n if (!isObject(value) || isMasked(value)) {\n return false;\n }\n var pattern = isFunction(value) ? reIsNative : reIsHostCtor;\n return pattern.test(toSource(value));\n}\n\nmodule.exports = baseIsNative;\n","var g;\n\n// This works in non-strict mode\ng = (function() {\n\treturn this;\n})();\n\ntry {\n\t// This works if eval is allowed (see CSP)\n\tg = g || new Function(\"return this\")();\n} catch (e) {\n\t// This works if the window reference is available\n\tif (typeof window === \"object\") g = window;\n}\n\n// g can still be undefined, but nothing to do about it...\n// We return undefined, instead of nothing here, so it's\n// easier to handle this case. if(!global) { ...}\n\nmodule.exports = g;\n","var Symbol = require('./_Symbol');\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Used to resolve the\n * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring)\n * of values.\n */\nvar nativeObjectToString = objectProto.toString;\n\n/** Built-in value references. */\nvar symToStringTag = Symbol ? Symbol.toStringTag : undefined;\n\n/**\n * A specialized version of `baseGetTag` which ignores `Symbol.toStringTag` values.\n *\n * @private\n * @param {*} value The value to query.\n * @returns {string} Returns the raw `toStringTag`.\n */\nfunction getRawTag(value) {\n var isOwn = hasOwnProperty.call(value, symToStringTag),\n tag = value[symToStringTag];\n\n try {\n value[symToStringTag] = undefined;\n var unmasked = true;\n } catch (e) {}\n\n var result = nativeObjectToString.call(value);\n if (unmasked) {\n if (isOwn) {\n value[symToStringTag] = tag;\n } else {\n delete value[symToStringTag];\n }\n }\n return result;\n}\n\nmodule.exports = getRawTag;\n","/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/**\n * Used to resolve the\n * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring)\n * of values.\n */\nvar nativeObjectToString = objectProto.toString;\n\n/**\n * Converts `value` to a string using `Object.prototype.toString`.\n *\n * @private\n * @param {*} value The value to convert.\n * @returns {string} Returns the converted string.\n */\nfunction objectToString(value) {\n return nativeObjectToString.call(value);\n}\n\nmodule.exports = objectToString;\n","var coreJsData = require('./_coreJsData');\n\n/** Used to detect methods masquerading as native. */\nvar maskSrcKey = (function() {\n var uid = /[^.]+$/.exec(coreJsData && coreJsData.keys && coreJsData.keys.IE_PROTO || '');\n return uid ? ('Symbol(src)_1.' + uid) : '';\n}());\n\n/**\n * Checks if `func` has its source masked.\n *\n * @private\n * @param {Function} func The function to check.\n * @returns {boolean} Returns `true` if `func` is masked, else `false`.\n */\nfunction isMasked(func) {\n return !!maskSrcKey && (maskSrcKey in func);\n}\n\nmodule.exports = isMasked;\n","var root = require('./_root');\n\n/** Used to detect overreaching core-js shims. */\nvar coreJsData = root['__core-js_shared__'];\n\nmodule.exports = coreJsData;\n","/** Used for built-in method references. */\nvar funcProto = Function.prototype;\n\n/** Used to resolve the decompiled source of functions. */\nvar funcToString = funcProto.toString;\n\n/**\n * Converts `func` to its source code.\n *\n * @private\n * @param {Function} func The function to convert.\n * @returns {string} Returns the source code.\n */\nfunction toSource(func) {\n if (func != null) {\n try {\n return funcToString.call(func);\n } catch (e) {}\n try {\n return (func + '');\n } catch (e) {}\n }\n return '';\n}\n\nmodule.exports = toSource;\n","/**\n * Gets the value at `key` of `object`.\n *\n * @private\n * @param {Object} [object] The object to query.\n * @param {string} key The key of the property to get.\n * @returns {*} Returns the property value.\n */\nfunction getValue(object, key) {\n return object == null ? undefined : object[key];\n}\n\nmodule.exports = getValue;\n","/** Used to detect hot functions by number of calls within a span of milliseconds. */\nvar HOT_COUNT = 800,\n HOT_SPAN = 16;\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeNow = Date.now;\n\n/**\n * Creates a function that'll short out and invoke `identity` instead\n * of `func` when it's called `HOT_COUNT` or more times in `HOT_SPAN`\n * milliseconds.\n *\n * @private\n * @param {Function} func The function to restrict.\n * @returns {Function} Returns the new shortable function.\n */\nfunction shortOut(func) {\n var count = 0,\n lastCalled = 0;\n\n return function() {\n var stamp = nativeNow(),\n remaining = HOT_SPAN - (stamp - lastCalled);\n\n lastCalled = stamp;\n if (remaining > 0) {\n if (++count >= HOT_COUNT) {\n return arguments[0];\n }\n } else {\n count = 0;\n }\n return func.apply(undefined, arguments);\n };\n}\n\nmodule.exports = shortOut;\n","var eq = require('./eq'),\n isArrayLike = require('./isArrayLike'),\n isIndex = require('./_isIndex'),\n isObject = require('./isObject');\n\n/**\n * Checks if the given arguments are from an iteratee call.\n *\n * @private\n * @param {*} value The potential iteratee value argument.\n * @param {*} index The potential iteratee index or key argument.\n * @param {*} object The potential iteratee object argument.\n * @returns {boolean} Returns `true` if the arguments are from an iteratee call,\n * else `false`.\n */\nfunction isIterateeCall(value, index, object) {\n if (!isObject(object)) {\n return false;\n }\n var type = typeof index;\n if (type == 'number'\n ? (isArrayLike(object) && isIndex(index, object.length))\n : (type == 'string' && index in object)\n ) {\n return eq(object[index], value);\n }\n return false;\n}\n\nmodule.exports = isIterateeCall;\n","var arrayLikeKeys = require('./_arrayLikeKeys'),\n baseKeysIn = require('./_baseKeysIn'),\n isArrayLike = require('./isArrayLike');\n\n/**\n * Creates an array of the own and inherited enumerable property names of `object`.\n *\n * **Note:** Non-object values are coerced to objects.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Object\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.keysIn(new Foo);\n * // => ['a', 'b', 'c'] (iteration order is not guaranteed)\n */\nfunction keysIn(object) {\n return isArrayLike(object) ? arrayLikeKeys(object, true) : baseKeysIn(object);\n}\n\nmodule.exports = keysIn;\n","var baseTimes = require('./_baseTimes'),\n isArguments = require('./isArguments'),\n isArray = require('./isArray'),\n isBuffer = require('./isBuffer'),\n isIndex = require('./_isIndex'),\n isTypedArray = require('./isTypedArray');\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Creates an array of the enumerable property names of the array-like `value`.\n *\n * @private\n * @param {*} value The value to query.\n * @param {boolean} inherited Specify returning inherited property names.\n * @returns {Array} Returns the array of property names.\n */\nfunction arrayLikeKeys(value, inherited) {\n var isArr = isArray(value),\n isArg = !isArr && isArguments(value),\n isBuff = !isArr && !isArg && isBuffer(value),\n isType = !isArr && !isArg && !isBuff && isTypedArray(value),\n skipIndexes = isArr || isArg || isBuff || isType,\n result = skipIndexes ? baseTimes(value.length, String) : [],\n length = result.length;\n\n for (var key in value) {\n if ((inherited || hasOwnProperty.call(value, key)) &&\n !(skipIndexes && (\n // Safari 9 has enumerable `arguments.length` in strict mode.\n key == 'length' ||\n // Node.js 0.10 has enumerable non-index properties on buffers.\n (isBuff && (key == 'offset' || key == 'parent')) ||\n // PhantomJS 2 has enumerable non-index properties on typed arrays.\n (isType && (key == 'buffer' || key == 'byteLength' || key == 'byteOffset')) ||\n // Skip index properties.\n isIndex(key, length)\n ))) {\n result.push(key);\n }\n }\n return result;\n}\n\nmodule.exports = arrayLikeKeys;\n","/**\n * The base implementation of `_.times` without support for iteratee shorthands\n * or max array length checks.\n *\n * @private\n * @param {number} n The number of times to invoke `iteratee`.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array} Returns the array of results.\n */\nfunction baseTimes(n, iteratee) {\n var index = -1,\n result = Array(n);\n\n while (++index < n) {\n result[index] = iteratee(index);\n }\n return result;\n}\n\nmodule.exports = baseTimes;\n","var baseGetTag = require('./_baseGetTag'),\n isObjectLike = require('./isObjectLike');\n\n/** `Object#toString` result references. */\nvar argsTag = '[object Arguments]';\n\n/**\n * The base implementation of `_.isArguments`.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an `arguments` object,\n */\nfunction baseIsArguments(value) {\n return isObjectLike(value) && baseGetTag(value) == argsTag;\n}\n\nmodule.exports = baseIsArguments;\n","var root = require('./_root'),\n stubFalse = require('./stubFalse');\n\n/** Detect free variable `exports`. */\nvar freeExports = typeof exports == 'object' && exports && !exports.nodeType && exports;\n\n/** Detect free variable `module`. */\nvar freeModule = freeExports && typeof module == 'object' && module && !module.nodeType && module;\n\n/** Detect the popular CommonJS extension `module.exports`. */\nvar moduleExports = freeModule && freeModule.exports === freeExports;\n\n/** Built-in value references. */\nvar Buffer = moduleExports ? root.Buffer : undefined;\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeIsBuffer = Buffer ? Buffer.isBuffer : undefined;\n\n/**\n * Checks if `value` is a buffer.\n *\n * @static\n * @memberOf _\n * @since 4.3.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a buffer, else `false`.\n * @example\n *\n * _.isBuffer(new Buffer(2));\n * // => true\n *\n * _.isBuffer(new Uint8Array(2));\n * // => false\n */\nvar isBuffer = nativeIsBuffer || stubFalse;\n\nmodule.exports = isBuffer;\n","/**\n * This method returns `false`.\n *\n * @static\n * @memberOf _\n * @since 4.13.0\n * @category Util\n * @returns {boolean} Returns `false`.\n * @example\n *\n * _.times(2, _.stubFalse);\n * // => [false, false]\n */\nfunction stubFalse() {\n return false;\n}\n\nmodule.exports = stubFalse;\n","var baseIsTypedArray = require('./_baseIsTypedArray'),\n baseUnary = require('./_baseUnary'),\n nodeUtil = require('./_nodeUtil');\n\n/* Node.js helper references. */\nvar nodeIsTypedArray = nodeUtil && nodeUtil.isTypedArray;\n\n/**\n * Checks if `value` is classified as a typed array.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a typed array, else `false`.\n * @example\n *\n * _.isTypedArray(new Uint8Array);\n * // => true\n *\n * _.isTypedArray([]);\n * // => false\n */\nvar isTypedArray = nodeIsTypedArray ? baseUnary(nodeIsTypedArray) : baseIsTypedArray;\n\nmodule.exports = isTypedArray;\n","var baseGetTag = require('./_baseGetTag'),\n isLength = require('./isLength'),\n isObjectLike = require('./isObjectLike');\n\n/** `Object#toString` result references. */\nvar argsTag = '[object Arguments]',\n arrayTag = '[object Array]',\n boolTag = '[object Boolean]',\n dateTag = '[object Date]',\n errorTag = '[object Error]',\n funcTag = '[object Function]',\n mapTag = '[object Map]',\n numberTag = '[object Number]',\n objectTag = '[object Object]',\n regexpTag = '[object RegExp]',\n setTag = '[object Set]',\n stringTag = '[object String]',\n weakMapTag = '[object WeakMap]';\n\nvar arrayBufferTag = '[object ArrayBuffer]',\n dataViewTag = '[object DataView]',\n float32Tag = '[object Float32Array]',\n float64Tag = '[object Float64Array]',\n int8Tag = '[object Int8Array]',\n int16Tag = '[object Int16Array]',\n int32Tag = '[object Int32Array]',\n uint8Tag = '[object Uint8Array]',\n uint8ClampedTag = '[object Uint8ClampedArray]',\n uint16Tag = '[object Uint16Array]',\n uint32Tag = '[object Uint32Array]';\n\n/** Used to identify `toStringTag` values of typed arrays. */\nvar typedArrayTags = {};\ntypedArrayTags[float32Tag] = typedArrayTags[float64Tag] =\ntypedArrayTags[int8Tag] = typedArrayTags[int16Tag] =\ntypedArrayTags[int32Tag] = typedArrayTags[uint8Tag] =\ntypedArrayTags[uint8ClampedTag] = typedArrayTags[uint16Tag] =\ntypedArrayTags[uint32Tag] = true;\ntypedArrayTags[argsTag] = typedArrayTags[arrayTag] =\ntypedArrayTags[arrayBufferTag] = typedArrayTags[boolTag] =\ntypedArrayTags[dataViewTag] = typedArrayTags[dateTag] =\ntypedArrayTags[errorTag] = typedArrayTags[funcTag] =\ntypedArrayTags[mapTag] = typedArrayTags[numberTag] =\ntypedArrayTags[objectTag] = typedArrayTags[regexpTag] =\ntypedArrayTags[setTag] = typedArrayTags[stringTag] =\ntypedArrayTags[weakMapTag] = false;\n\n/**\n * The base implementation of `_.isTypedArray` without Node.js optimizations.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a typed array, else `false`.\n */\nfunction baseIsTypedArray(value) {\n return isObjectLike(value) &&\n isLength(value.length) && !!typedArrayTags[baseGetTag(value)];\n}\n\nmodule.exports = baseIsTypedArray;\n","var freeGlobal = require('./_freeGlobal');\n\n/** Detect free variable `exports`. */\nvar freeExports = typeof exports == 'object' && exports && !exports.nodeType && exports;\n\n/** Detect free variable `module`. */\nvar freeModule = freeExports && typeof module == 'object' && module && !module.nodeType && module;\n\n/** Detect the popular CommonJS extension `module.exports`. */\nvar moduleExports = freeModule && freeModule.exports === freeExports;\n\n/** Detect free variable `process` from Node.js. */\nvar freeProcess = moduleExports && freeGlobal.process;\n\n/** Used to access faster Node.js helpers. */\nvar nodeUtil = (function() {\n try {\n // Use `util.types` for Node.js 10+.\n var types = freeModule && freeModule.require && freeModule.require('util').types;\n\n if (types) {\n return types;\n }\n\n // Legacy `process.binding('util')` for Node.js < 10.\n return freeProcess && freeProcess.binding && freeProcess.binding('util');\n } catch (e) {}\n}());\n\nmodule.exports = nodeUtil;\n","var isObject = require('./isObject'),\n isPrototype = require('./_isPrototype'),\n nativeKeysIn = require('./_nativeKeysIn');\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * The base implementation of `_.keysIn` which doesn't treat sparse arrays as dense.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n */\nfunction baseKeysIn(object) {\n if (!isObject(object)) {\n return nativeKeysIn(object);\n }\n var isProto = isPrototype(object),\n result = [];\n\n for (var key in object) {\n if (!(key == 'constructor' && (isProto || !hasOwnProperty.call(object, key)))) {\n result.push(key);\n }\n }\n return result;\n}\n\nmodule.exports = baseKeysIn;\n","/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/**\n * Checks if `value` is likely a prototype object.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a prototype, else `false`.\n */\nfunction isPrototype(value) {\n var Ctor = value && value.constructor,\n proto = (typeof Ctor == 'function' && Ctor.prototype) || objectProto;\n\n return value === proto;\n}\n\nmodule.exports = isPrototype;\n","/**\n * This function is like\n * [`Object.keys`](http://ecma-international.org/ecma-262/7.0/#sec-object.keys)\n * except that it includes inherited enumerable properties.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n */\nfunction nativeKeysIn(object) {\n var result = [];\n if (object != null) {\n for (var key in Object(object)) {\n result.push(key);\n }\n }\n return result;\n}\n\nmodule.exports = nativeKeysIn;\n","var SetCache = require('./_SetCache'),\n arrayIncludes = require('./_arrayIncludes'),\n arrayIncludesWith = require('./_arrayIncludesWith'),\n arrayMap = require('./_arrayMap'),\n baseUnary = require('./_baseUnary'),\n cacheHas = require('./_cacheHas');\n\n/** Used as the size to enable large array optimizations. */\nvar LARGE_ARRAY_SIZE = 200;\n\n/**\n * The base implementation of methods like `_.difference` without support\n * for excluding multiple arrays or iteratee shorthands.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {Array} values The values to exclude.\n * @param {Function} [iteratee] The iteratee invoked per element.\n * @param {Function} [comparator] The comparator invoked per element.\n * @returns {Array} Returns the new array of filtered values.\n */\nfunction baseDifference(array, values, iteratee, comparator) {\n var index = -1,\n includes = arrayIncludes,\n isCommon = true,\n length = array.length,\n result = [],\n valuesLength = values.length;\n\n if (!length) {\n return result;\n }\n if (iteratee) {\n values = arrayMap(values, baseUnary(iteratee));\n }\n if (comparator) {\n includes = arrayIncludesWith;\n isCommon = false;\n }\n else if (values.length >= LARGE_ARRAY_SIZE) {\n includes = cacheHas;\n isCommon = false;\n values = new SetCache(values);\n }\n outer:\n while (++index < length) {\n var value = array[index],\n computed = iteratee == null ? value : iteratee(value);\n\n value = (comparator || value !== 0) ? value : 0;\n if (isCommon && computed === computed) {\n var valuesIndex = valuesLength;\n while (valuesIndex--) {\n if (values[valuesIndex] === computed) {\n continue outer;\n }\n }\n result.push(value);\n }\n else if (!includes(values, computed, comparator)) {\n result.push(value);\n }\n }\n return result;\n}\n\nmodule.exports = baseDifference;\n","var MapCache = require('./_MapCache'),\n setCacheAdd = require('./_setCacheAdd'),\n setCacheHas = require('./_setCacheHas');\n\n/**\n *\n * Creates an array cache object to store unique values.\n *\n * @private\n * @constructor\n * @param {Array} [values] The values to cache.\n */\nfunction SetCache(values) {\n var index = -1,\n length = values == null ? 0 : values.length;\n\n this.__data__ = new MapCache;\n while (++index < length) {\n this.add(values[index]);\n }\n}\n\n// Add methods to `SetCache`.\nSetCache.prototype.add = SetCache.prototype.push = setCacheAdd;\nSetCache.prototype.has = setCacheHas;\n\nmodule.exports = SetCache;\n","var mapCacheClear = require('./_mapCacheClear'),\n mapCacheDelete = require('./_mapCacheDelete'),\n mapCacheGet = require('./_mapCacheGet'),\n mapCacheHas = require('./_mapCacheHas'),\n mapCacheSet = require('./_mapCacheSet');\n\n/**\n * Creates a map cache object to store key-value pairs.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\nfunction MapCache(entries) {\n var index = -1,\n length = entries == null ? 0 : entries.length;\n\n this.clear();\n while (++index < length) {\n var entry = entries[index];\n this.set(entry[0], entry[1]);\n }\n}\n\n// Add methods to `MapCache`.\nMapCache.prototype.clear = mapCacheClear;\nMapCache.prototype['delete'] = mapCacheDelete;\nMapCache.prototype.get = mapCacheGet;\nMapCache.prototype.has = mapCacheHas;\nMapCache.prototype.set = mapCacheSet;\n\nmodule.exports = MapCache;\n","var Hash = require('./_Hash'),\n ListCache = require('./_ListCache'),\n Map = require('./_Map');\n\n/**\n * Removes all key-value entries from the map.\n *\n * @private\n * @name clear\n * @memberOf MapCache\n */\nfunction mapCacheClear() {\n this.size = 0;\n this.__data__ = {\n 'hash': new Hash,\n 'map': new (Map || ListCache),\n 'string': new Hash\n };\n}\n\nmodule.exports = mapCacheClear;\n","var hashClear = require('./_hashClear'),\n hashDelete = require('./_hashDelete'),\n hashGet = require('./_hashGet'),\n hashHas = require('./_hashHas'),\n hashSet = require('./_hashSet');\n\n/**\n * Creates a hash object.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\nfunction Hash(entries) {\n var index = -1,\n length = entries == null ? 0 : entries.length;\n\n this.clear();\n while (++index < length) {\n var entry = entries[index];\n this.set(entry[0], entry[1]);\n }\n}\n\n// Add methods to `Hash`.\nHash.prototype.clear = hashClear;\nHash.prototype['delete'] = hashDelete;\nHash.prototype.get = hashGet;\nHash.prototype.has = hashHas;\nHash.prototype.set = hashSet;\n\nmodule.exports = Hash;\n","var nativeCreate = require('./_nativeCreate');\n\n/**\n * Removes all key-value entries from the hash.\n *\n * @private\n * @name clear\n * @memberOf Hash\n */\nfunction hashClear() {\n this.__data__ = nativeCreate ? nativeCreate(null) : {};\n this.size = 0;\n}\n\nmodule.exports = hashClear;\n","/**\n * Removes `key` and its value from the hash.\n *\n * @private\n * @name delete\n * @memberOf Hash\n * @param {Object} hash The hash to modify.\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction hashDelete(key) {\n var result = this.has(key) && delete this.__data__[key];\n this.size -= result ? 1 : 0;\n return result;\n}\n\nmodule.exports = hashDelete;\n","var nativeCreate = require('./_nativeCreate');\n\n/** Used to stand-in for `undefined` hash values. */\nvar HASH_UNDEFINED = '__lodash_hash_undefined__';\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Gets the hash value for `key`.\n *\n * @private\n * @name get\n * @memberOf Hash\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction hashGet(key) {\n var data = this.__data__;\n if (nativeCreate) {\n var result = data[key];\n return result === HASH_UNDEFINED ? undefined : result;\n }\n return hasOwnProperty.call(data, key) ? data[key] : undefined;\n}\n\nmodule.exports = hashGet;\n","var nativeCreate = require('./_nativeCreate');\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Checks if a hash value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf Hash\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction hashHas(key) {\n var data = this.__data__;\n return nativeCreate ? (data[key] !== undefined) : hasOwnProperty.call(data, key);\n}\n\nmodule.exports = hashHas;\n","var nativeCreate = require('./_nativeCreate');\n\n/** Used to stand-in for `undefined` hash values. */\nvar HASH_UNDEFINED = '__lodash_hash_undefined__';\n\n/**\n * Sets the hash `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf Hash\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the hash instance.\n */\nfunction hashSet(key, value) {\n var data = this.__data__;\n this.size += this.has(key) ? 0 : 1;\n data[key] = (nativeCreate && value === undefined) ? HASH_UNDEFINED : value;\n return this;\n}\n\nmodule.exports = hashSet;\n","var listCacheClear = require('./_listCacheClear'),\n listCacheDelete = require('./_listCacheDelete'),\n listCacheGet = require('./_listCacheGet'),\n listCacheHas = require('./_listCacheHas'),\n listCacheSet = require('./_listCacheSet');\n\n/**\n * Creates an list cache object.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\nfunction ListCache(entries) {\n var index = -1,\n length = entries == null ? 0 : entries.length;\n\n this.clear();\n while (++index < length) {\n var entry = entries[index];\n this.set(entry[0], entry[1]);\n }\n}\n\n// Add methods to `ListCache`.\nListCache.prototype.clear = listCacheClear;\nListCache.prototype['delete'] = listCacheDelete;\nListCache.prototype.get = listCacheGet;\nListCache.prototype.has = listCacheHas;\nListCache.prototype.set = listCacheSet;\n\nmodule.exports = ListCache;\n","/**\n * Removes all key-value entries from the list cache.\n *\n * @private\n * @name clear\n * @memberOf ListCache\n */\nfunction listCacheClear() {\n this.__data__ = [];\n this.size = 0;\n}\n\nmodule.exports = listCacheClear;\n","var assocIndexOf = require('./_assocIndexOf');\n\n/** Used for built-in method references. */\nvar arrayProto = Array.prototype;\n\n/** Built-in value references. */\nvar splice = arrayProto.splice;\n\n/**\n * Removes `key` and its value from the list cache.\n *\n * @private\n * @name delete\n * @memberOf ListCache\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction listCacheDelete(key) {\n var data = this.__data__,\n index = assocIndexOf(data, key);\n\n if (index < 0) {\n return false;\n }\n var lastIndex = data.length - 1;\n if (index == lastIndex) {\n data.pop();\n } else {\n splice.call(data, index, 1);\n }\n --this.size;\n return true;\n}\n\nmodule.exports = listCacheDelete;\n","var assocIndexOf = require('./_assocIndexOf');\n\n/**\n * Gets the list cache value for `key`.\n *\n * @private\n * @name get\n * @memberOf ListCache\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction listCacheGet(key) {\n var data = this.__data__,\n index = assocIndexOf(data, key);\n\n return index < 0 ? undefined : data[index][1];\n}\n\nmodule.exports = listCacheGet;\n","var assocIndexOf = require('./_assocIndexOf');\n\n/**\n * Checks if a list cache value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf ListCache\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction listCacheHas(key) {\n return assocIndexOf(this.__data__, key) > -1;\n}\n\nmodule.exports = listCacheHas;\n","var assocIndexOf = require('./_assocIndexOf');\n\n/**\n * Sets the list cache `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf ListCache\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the list cache instance.\n */\nfunction listCacheSet(key, value) {\n var data = this.__data__,\n index = assocIndexOf(data, key);\n\n if (index < 0) {\n ++this.size;\n data.push([key, value]);\n } else {\n data[index][1] = value;\n }\n return this;\n}\n\nmodule.exports = listCacheSet;\n","var getNative = require('./_getNative'),\n root = require('./_root');\n\n/* Built-in method references that are verified to be native. */\nvar Map = getNative(root, 'Map');\n\nmodule.exports = Map;\n","var getMapData = require('./_getMapData');\n\n/**\n * Removes `key` and its value from the map.\n *\n * @private\n * @name delete\n * @memberOf MapCache\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction mapCacheDelete(key) {\n var result = getMapData(this, key)['delete'](key);\n this.size -= result ? 1 : 0;\n return result;\n}\n\nmodule.exports = mapCacheDelete;\n","/**\n * Checks if `value` is suitable for use as unique object key.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is suitable, else `false`.\n */\nfunction isKeyable(value) {\n var type = typeof value;\n return (type == 'string' || type == 'number' || type == 'symbol' || type == 'boolean')\n ? (value !== '__proto__')\n : (value === null);\n}\n\nmodule.exports = isKeyable;\n","var getMapData = require('./_getMapData');\n\n/**\n * Gets the map value for `key`.\n *\n * @private\n * @name get\n * @memberOf MapCache\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction mapCacheGet(key) {\n return getMapData(this, key).get(key);\n}\n\nmodule.exports = mapCacheGet;\n","var getMapData = require('./_getMapData');\n\n/**\n * Checks if a map value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf MapCache\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction mapCacheHas(key) {\n return getMapData(this, key).has(key);\n}\n\nmodule.exports = mapCacheHas;\n","var getMapData = require('./_getMapData');\n\n/**\n * Sets the map `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf MapCache\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the map cache instance.\n */\nfunction mapCacheSet(key, value) {\n var data = getMapData(this, key),\n size = data.size;\n\n data.set(key, value);\n this.size += data.size == size ? 0 : 1;\n return this;\n}\n\nmodule.exports = mapCacheSet;\n","/** Used to stand-in for `undefined` hash values. */\nvar HASH_UNDEFINED = '__lodash_hash_undefined__';\n\n/**\n * Adds `value` to the array cache.\n *\n * @private\n * @name add\n * @memberOf SetCache\n * @alias push\n * @param {*} value The value to cache.\n * @returns {Object} Returns the cache instance.\n */\nfunction setCacheAdd(value) {\n this.__data__.set(value, HASH_UNDEFINED);\n return this;\n}\n\nmodule.exports = setCacheAdd;\n","/**\n * Checks if `value` is in the array cache.\n *\n * @private\n * @name has\n * @memberOf SetCache\n * @param {*} value The value to search for.\n * @returns {number} Returns `true` if `value` is found, else `false`.\n */\nfunction setCacheHas(value) {\n return this.__data__.has(value);\n}\n\nmodule.exports = setCacheHas;\n","var baseIndexOf = require('./_baseIndexOf');\n\n/**\n * A specialized version of `_.includes` for arrays without support for\n * specifying an index to search from.\n *\n * @private\n * @param {Array} [array] The array to inspect.\n * @param {*} target The value to search for.\n * @returns {boolean} Returns `true` if `target` is found, else `false`.\n */\nfunction arrayIncludes(array, value) {\n var length = array == null ? 0 : array.length;\n return !!length && baseIndexOf(array, value, 0) > -1;\n}\n\nmodule.exports = arrayIncludes;\n","var baseFindIndex = require('./_baseFindIndex'),\n baseIsNaN = require('./_baseIsNaN'),\n strictIndexOf = require('./_strictIndexOf');\n\n/**\n * The base implementation of `_.indexOf` without `fromIndex` bounds checks.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {*} value The value to search for.\n * @param {number} fromIndex The index to search from.\n * @returns {number} Returns the index of the matched value, else `-1`.\n */\nfunction baseIndexOf(array, value, fromIndex) {\n return value === value\n ? strictIndexOf(array, value, fromIndex)\n : baseFindIndex(array, baseIsNaN, fromIndex);\n}\n\nmodule.exports = baseIndexOf;\n","/**\n * The base implementation of `_.findIndex` and `_.findLastIndex` without\n * support for iteratee shorthands.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {Function} predicate The function invoked per iteration.\n * @param {number} fromIndex The index to search from.\n * @param {boolean} [fromRight] Specify iterating from right to left.\n * @returns {number} Returns the index of the matched value, else `-1`.\n */\nfunction baseFindIndex(array, predicate, fromIndex, fromRight) {\n var length = array.length,\n index = fromIndex + (fromRight ? 1 : -1);\n\n while ((fromRight ? index-- : ++index < length)) {\n if (predicate(array[index], index, array)) {\n return index;\n }\n }\n return -1;\n}\n\nmodule.exports = baseFindIndex;\n","/**\n * The base implementation of `_.isNaN` without support for number objects.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is `NaN`, else `false`.\n */\nfunction baseIsNaN(value) {\n return value !== value;\n}\n\nmodule.exports = baseIsNaN;\n","/**\n * A specialized version of `_.indexOf` which performs strict equality\n * comparisons of values, i.e. `===`.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {*} value The value to search for.\n * @param {number} fromIndex The index to search from.\n * @returns {number} Returns the index of the matched value, else `-1`.\n */\nfunction strictIndexOf(array, value, fromIndex) {\n var index = fromIndex - 1,\n length = array.length;\n\n while (++index < length) {\n if (array[index] === value) {\n return index;\n }\n }\n return -1;\n}\n\nmodule.exports = strictIndexOf;\n","/**\n * This function is like `arrayIncludes` except that it accepts a comparator.\n *\n * @private\n * @param {Array} [array] The array to inspect.\n * @param {*} target The value to search for.\n * @param {Function} comparator The comparator invoked per element.\n * @returns {boolean} Returns `true` if `target` is found, else `false`.\n */\nfunction arrayIncludesWith(array, value, comparator) {\n var index = -1,\n length = array == null ? 0 : array.length;\n\n while (++index < length) {\n if (comparator(value, array[index])) {\n return true;\n }\n }\n return false;\n}\n\nmodule.exports = arrayIncludesWith;\n","/**\n * A specialized version of `_.map` for arrays without support for iteratee\n * shorthands.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array} Returns the new mapped array.\n */\nfunction arrayMap(array, iteratee) {\n var index = -1,\n length = array == null ? 0 : array.length,\n result = Array(length);\n\n while (++index < length) {\n result[index] = iteratee(array[index], index, array);\n }\n return result;\n}\n\nmodule.exports = arrayMap;\n","/**\n * Checks if a `cache` value for `key` exists.\n *\n * @private\n * @param {Object} cache The cache to query.\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction cacheHas(cache, key) {\n return cache.has(key);\n}\n\nmodule.exports = cacheHas;\n","var arrayPush = require('./_arrayPush'),\n isFlattenable = require('./_isFlattenable');\n\n/**\n * The base implementation of `_.flatten` with support for restricting flattening.\n *\n * @private\n * @param {Array} array The array to flatten.\n * @param {number} depth The maximum recursion depth.\n * @param {boolean} [predicate=isFlattenable] The function invoked per iteration.\n * @param {boolean} [isStrict] Restrict to values that pass `predicate` checks.\n * @param {Array} [result=[]] The initial result value.\n * @returns {Array} Returns the new flattened array.\n */\nfunction baseFlatten(array, depth, predicate, isStrict, result) {\n var index = -1,\n length = array.length;\n\n predicate || (predicate = isFlattenable);\n result || (result = []);\n\n while (++index < length) {\n var value = array[index];\n if (depth > 0 && predicate(value)) {\n if (depth > 1) {\n // Recursively flatten arrays (susceptible to call stack limits).\n baseFlatten(value, depth - 1, predicate, isStrict, result);\n } else {\n arrayPush(result, value);\n }\n } else if (!isStrict) {\n result[result.length] = value;\n }\n }\n return result;\n}\n\nmodule.exports = baseFlatten;\n","/**\n * Appends the elements of `values` to `array`.\n *\n * @private\n * @param {Array} array The array to modify.\n * @param {Array} values The values to append.\n * @returns {Array} Returns `array`.\n */\nfunction arrayPush(array, values) {\n var index = -1,\n length = values.length,\n offset = array.length;\n\n while (++index < length) {\n array[offset + index] = values[index];\n }\n return array;\n}\n\nmodule.exports = arrayPush;\n","var Symbol = require('./_Symbol'),\n isArguments = require('./isArguments'),\n isArray = require('./isArray');\n\n/** Built-in value references. */\nvar spreadableSymbol = Symbol ? Symbol.isConcatSpreadable : undefined;\n\n/**\n * Checks if `value` is a flattenable `arguments` object or array.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is flattenable, else `false`.\n */\nfunction isFlattenable(value) {\n return isArray(value) || isArguments(value) ||\n !!(spreadableSymbol && value && value[spreadableSymbol]);\n}\n\nmodule.exports = isFlattenable;\n","var isArrayLike = require('./isArrayLike'),\n isObjectLike = require('./isObjectLike');\n\n/**\n * This method is like `_.isArrayLike` except that it also checks if `value`\n * is an object.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an array-like object,\n * else `false`.\n * @example\n *\n * _.isArrayLikeObject([1, 2, 3]);\n * // => true\n *\n * _.isArrayLikeObject(document.body.children);\n * // => true\n *\n * _.isArrayLikeObject('abc');\n * // => false\n *\n * _.isArrayLikeObject(_.noop);\n * // => false\n */\nfunction isArrayLikeObject(value) {\n return isObjectLike(value) && isArrayLike(value);\n}\n\nmodule.exports = isArrayLikeObject;\n","/*! *****************************************************************************\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 Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });\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) {\r\n for (var i = 0, il = from.length, j = to.length; i < il; i++, j++)\r\n to[j] = from[i];\r\n return to;\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","import { DataQuery, SelectableValue } from '@grafana/data';\nimport { AwsAuthDataSourceJsonData, AwsAuthDataSourceSecureJsonData } from '@grafana/aws-sdk';\n\n// Matches https://github.com/grafana/iot-sitewise-datasource/blob/main/pkg/models/query.go#L3\nexport enum QueryType {\n ListAssetModels = 'ListAssetModels',\n ListAssets = 'ListAssets',\n ListAssociatedAssets = 'ListAssociatedAssets',\n DescribeAsset = 'DescribeAsset',\n PropertyValue = 'PropertyValue',\n PropertyValueHistory = 'PropertyValueHistory',\n PropertyAggregate = 'PropertyAggregate',\n}\n\nexport enum SiteWiseQuality {\n ANY = 'ANY',\n GOOD = 'GOOD',\n BAD = 'BAD',\n UNCERTAIN = 'UNCERTAIN',\n}\n\nexport enum SiteWiseTimeOrder {\n ASCENDING = 'ASCENDING',\n DESCENDING = 'DESCENDING',\n}\n\nexport enum SiteWiseResolution {\n Auto = 'AUTO', // or missing!\n Min = '1m',\n Hour = '1h',\n Day = '1d',\n}\n\nexport enum AggregateType {\n AVERAGE = 'AVERAGE',\n COUNT = 'COUNT',\n MAXIMUM = 'MAXIMUM',\n MINIMUM = 'MINIMUM',\n SUM = 'SUM',\n STANDARD_DEVIATION = 'STANDARD_DEVIATION',\n}\n\nexport interface SitewiseQuery extends DataQuery {\n queryType: QueryType;\n region?: string; // aws region string\n\n // Although these are not required everywhere, many queries use them\n assetId?: string;\n propertyId?: string;\n\n maxPageAggregations?: number;\n}\n\nexport interface SitewiseNextQuery extends SitewiseQuery {\n /**\n * The next token should never be saved in the JSON model, however some queries\n * will require multiple pages in order to fulfil the requests\n */\n nextToken?: string;\n}\n\n/**\n * {@link https://docs.aws.amazon.com/iot-sitewise/latest/APIReference/API_ListAssetModels.html}\n */\nexport interface ListAssetModelsQuery extends SitewiseQuery {\n queryType: QueryType.ListAssetModels;\n}\n\nexport function isListAssetModelsQuery(q?: SitewiseQuery): q is ListAssetModelsQuery {\n return q?.queryType === QueryType.ListAssetModels;\n}\n\n/**\n * {@link https://docs.aws.amazon.com/iot-sitewise/latest/APIReference/API_ListAssetModels.html}\n */\nexport interface ListAssetsQuery extends SitewiseQuery {\n queryType: QueryType.ListAssets;\n modelId?: string;\n filter: 'ALL' | 'TOP_LEVEL';\n}\n\nexport function isListAssetsQuery(q?: SitewiseQuery): q is ListAssetsQuery {\n return q?.queryType === QueryType.ListAssets;\n}\n\n// https://docs.aws.amazon.com/iot-sitewise/latest/APIReference/API_ListAssociatedAssets.html\n\nexport interface ListAssociatedAssetsQuery extends SitewiseQuery {\n queryType: QueryType.ListAssociatedAssets;\n hierarchyId?: string; // if empty, will list the parents\n}\n\nexport function isListAssociatedAssetsQuery(q?: SitewiseQuery): q is ListAssociatedAssetsQuery {\n return q?.queryType === QueryType.ListAssociatedAssets;\n}\n\n/**\n * {@link https://docs.aws.amazon.com/iot-sitewise/latest/APIReference/API_ListAssetModels.html}\n */\nexport interface DescribeAssetQuery extends SitewiseQuery {\n queryType: QueryType.DescribeAsset;\n}\n\nexport function isDescribeAssetQuery(q?: SitewiseQuery): q is ListAssetModelsQuery {\n return q?.queryType === QueryType.DescribeAsset;\n}\n\n/**\n * {@link https://docs.aws.amazon.com/iot-sitewise/latest/APIReference/API_GetAssetPropertyValue.html}\n * {@link https://github.com/grafana/iot-sitewise-datasource/blob/main/pkg/models/property.go#L15}\n */\nexport interface AssetPropertyValueQuery extends SitewiseQuery {\n queryType: QueryType.PropertyValue;\n}\n\nexport function isAssetPropertyValueQuery(q?: SitewiseQuery): q is AssetPropertyValueQuery {\n return q?.queryType === QueryType.PropertyAggregate;\n}\n\n/**\n * {@link https://docs.aws.amazon.com/iot-sitewise/latest/APIReference/API_GetAssetPropertyValueHistory.html}\n */\nexport interface AssetPropertyValueHistoryQuery extends SitewiseQuery {\n queryType: QueryType.PropertyValueHistory;\n\n quality?: SiteWiseQuality;\n timeOrdering?: SiteWiseTimeOrder;\n}\n\nexport function isAssetPropertyValueHistoryQuery(q?: SitewiseQuery): q is AssetPropertyValueHistoryQuery {\n return q?.queryType === QueryType.PropertyValueHistory;\n}\n\n/**\n * {@link https://docs.aws.amazon.com/iot-sitewise/latest/APIReference/API_GetAssetPropertyAggregates.html}\n */\nexport interface AssetPropertyAggregatesQuery extends SitewiseQuery {\n queryType: QueryType.PropertyAggregate;\n\n resolution?: SiteWiseResolution;\n aggregates: AggregateType[]; // at least one\n\n quality?: SiteWiseQuality;\n timeOrdering?: SiteWiseTimeOrder;\n}\n\nexport function isAssetPropertyAggregatesQuery(q?: SitewiseQuery): q is AssetPropertyAggregatesQuery {\n return q?.queryType === QueryType.PropertyAggregate;\n}\n\nexport function isPropertyQueryType(queryType?: QueryType): boolean {\n return (\n queryType === QueryType.PropertyAggregate ||\n queryType === QueryType.PropertyValue ||\n queryType === QueryType.PropertyValueHistory\n );\n}\n\n// matches native sitewise API with capitals\nexport interface AssetPropertyInfo extends SelectableValue {\n Id: string;\n Name: string;\n Alias?: string;\n DataType: string;\n Unit: string;\n\n // Filled in for selectable values\n value: string;\n label: string;\n}\n\n// Processed form DescribeAssetResult frame\nexport interface AssetInfo {\n name: string; // string\n id: string; // string\n arn: string; // string\n model_id: string;\n properties: AssetPropertyInfo[];\n hierarchy: Array>; // Id is value\n}\n\n/**\n * Metadata attached to DataFrame results\n */\nexport interface SitewiseCustomMeta {\n nextToken?: string;\n\n resolution?: string;\n\n aggregates?: string[];\n}\n\n/**\n * Global datasource options\n */\nexport interface SitewiseOptions extends AwsAuthDataSourceJsonData {\n // nothing for now\n edgeAuthMode?: string;\n edgeAuthUser?: string;\n}\n\nexport interface SitewiseSecureJsonData extends AwsAuthDataSourceSecureJsonData {\n // nothing for now\n edgeAuthPass?: string;\n cert?: string;\n}\n","/*! *****************************************************************************\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 (b.hasOwnProperty(p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n};\r\n\r\nexport function __extends(d, b) {\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 function __createBinding(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, exports) {\r\n for (var p in m) if (p !== \"default\" && !exports.hasOwnProperty(p)) exports[p] = 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\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\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 __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\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 (Object.hasOwnProperty.call(mod, k)) result[k] = mod[k];\r\n result.default = 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, privateMap) {\r\n if (!privateMap.has(receiver)) {\r\n throw new TypeError(\"attempted to get private field on non-instance\");\r\n }\r\n return privateMap.get(receiver);\r\n}\r\n\r\nexport function __classPrivateFieldSet(receiver, privateMap, value) {\r\n if (!privateMap.has(receiver)) {\r\n throw new TypeError(\"attempted to set private field on non-instance\");\r\n }\r\n privateMap.set(receiver, value);\r\n return value;\r\n}\r\n","/** PURE_IMPORTS_START PURE_IMPORTS_END */\nexport function isFunction(x) {\n return typeof x === 'function';\n}\n//# sourceMappingURL=isFunction.js.map\n","/** PURE_IMPORTS_START PURE_IMPORTS_END */\nvar _enable_super_gross_mode_that_will_cause_bad_things = false;\nexport var config = {\n Promise: undefined,\n set useDeprecatedSynchronousErrorHandling(value) {\n if (value) {\n var error = /*@__PURE__*/ new Error();\n /*@__PURE__*/ console.warn('DEPRECATED! RxJS was set to use deprecated synchronous error handling behavior by code at: \\n' + error.stack);\n }\n else if (_enable_super_gross_mode_that_will_cause_bad_things) {\n /*@__PURE__*/ console.log('RxJS: Back to a better error behavior. Thank you. <3');\n }\n _enable_super_gross_mode_that_will_cause_bad_things = value;\n },\n get useDeprecatedSynchronousErrorHandling() {\n return _enable_super_gross_mode_that_will_cause_bad_things;\n },\n};\n//# sourceMappingURL=config.js.map\n","/** PURE_IMPORTS_START PURE_IMPORTS_END */\nexport function hostReportError(err) {\n setTimeout(function () { throw err; }, 0);\n}\n//# sourceMappingURL=hostReportError.js.map\n","/** PURE_IMPORTS_START _config,_util_hostReportError PURE_IMPORTS_END */\nimport { config } from './config';\nimport { hostReportError } from './util/hostReportError';\nexport var empty = {\n closed: true,\n next: function (value) { },\n error: function (err) {\n if (config.useDeprecatedSynchronousErrorHandling) {\n throw err;\n }\n else {\n hostReportError(err);\n }\n },\n complete: function () { }\n};\n//# sourceMappingURL=Observer.js.map\n","/** PURE_IMPORTS_START PURE_IMPORTS_END */\nexport var isArray = /*@__PURE__*/ (function () { return Array.isArray || (function (x) { return x && typeof x.length === 'number'; }); })();\n//# sourceMappingURL=isArray.js.map\n","/** PURE_IMPORTS_START PURE_IMPORTS_END */\nvar UnsubscriptionErrorImpl = /*@__PURE__*/ (function () {\n function UnsubscriptionErrorImpl(errors) {\n Error.call(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 this.name = 'UnsubscriptionError';\n this.errors = errors;\n return this;\n }\n UnsubscriptionErrorImpl.prototype = /*@__PURE__*/ Object.create(Error.prototype);\n return UnsubscriptionErrorImpl;\n})();\nexport var UnsubscriptionError = UnsubscriptionErrorImpl;\n//# sourceMappingURL=UnsubscriptionError.js.map\n","/** PURE_IMPORTS_START _util_isArray,_util_isObject,_util_isFunction,_util_UnsubscriptionError PURE_IMPORTS_END */\nimport { isArray } from './util/isArray';\nimport { isObject } from './util/isObject';\nimport { isFunction } from './util/isFunction';\nimport { UnsubscriptionError } from './util/UnsubscriptionError';\nvar Subscription = /*@__PURE__*/ (function () {\n function Subscription(unsubscribe) {\n this.closed = false;\n this._parentOrParents = null;\n this._subscriptions = null;\n if (unsubscribe) {\n this._ctorUnsubscribe = true;\n this._unsubscribe = unsubscribe;\n }\n }\n Subscription.prototype.unsubscribe = function () {\n var errors;\n if (this.closed) {\n return;\n }\n var _a = this, _parentOrParents = _a._parentOrParents, _ctorUnsubscribe = _a._ctorUnsubscribe, _unsubscribe = _a._unsubscribe, _subscriptions = _a._subscriptions;\n this.closed = true;\n this._parentOrParents = null;\n this._subscriptions = null;\n if (_parentOrParents instanceof Subscription) {\n _parentOrParents.remove(this);\n }\n else if (_parentOrParents !== null) {\n for (var index = 0; index < _parentOrParents.length; ++index) {\n var parent_1 = _parentOrParents[index];\n parent_1.remove(this);\n }\n }\n if (isFunction(_unsubscribe)) {\n if (_ctorUnsubscribe) {\n this._unsubscribe = undefined;\n }\n try {\n _unsubscribe.call(this);\n }\n catch (e) {\n errors = e instanceof UnsubscriptionError ? flattenUnsubscriptionErrors(e.errors) : [e];\n }\n }\n if (isArray(_subscriptions)) {\n var index = -1;\n var len = _subscriptions.length;\n while (++index < len) {\n var sub = _subscriptions[index];\n if (isObject(sub)) {\n try {\n sub.unsubscribe();\n }\n catch (e) {\n errors = errors || [];\n if (e instanceof UnsubscriptionError) {\n errors = errors.concat(flattenUnsubscriptionErrors(e.errors));\n }\n else {\n errors.push(e);\n }\n }\n }\n }\n }\n if (errors) {\n throw new UnsubscriptionError(errors);\n }\n };\n Subscription.prototype.add = function (teardown) {\n var subscription = teardown;\n if (!teardown) {\n return Subscription.EMPTY;\n }\n switch (typeof teardown) {\n case 'function':\n subscription = new Subscription(teardown);\n case 'object':\n if (subscription === this || subscription.closed || typeof subscription.unsubscribe !== 'function') {\n return subscription;\n }\n else if (this.closed) {\n subscription.unsubscribe();\n return subscription;\n }\n else if (!(subscription instanceof Subscription)) {\n var tmp = subscription;\n subscription = new Subscription();\n subscription._subscriptions = [tmp];\n }\n break;\n default: {\n throw new Error('unrecognized teardown ' + teardown + ' added to Subscription.');\n }\n }\n var _parentOrParents = subscription._parentOrParents;\n if (_parentOrParents === null) {\n subscription._parentOrParents = this;\n }\n else if (_parentOrParents instanceof Subscription) {\n if (_parentOrParents === this) {\n return subscription;\n }\n subscription._parentOrParents = [_parentOrParents, this];\n }\n else if (_parentOrParents.indexOf(this) === -1) {\n _parentOrParents.push(this);\n }\n else {\n return subscription;\n }\n var subscriptions = this._subscriptions;\n if (subscriptions === null) {\n this._subscriptions = [subscription];\n }\n else {\n subscriptions.push(subscription);\n }\n return subscription;\n };\n Subscription.prototype.remove = function (subscription) {\n var subscriptions = this._subscriptions;\n if (subscriptions) {\n var subscriptionIndex = subscriptions.indexOf(subscription);\n if (subscriptionIndex !== -1) {\n subscriptions.splice(subscriptionIndex, 1);\n }\n }\n };\n Subscription.EMPTY = (function (empty) {\n empty.closed = true;\n return empty;\n }(new Subscription()));\n return Subscription;\n}());\nexport { Subscription };\nfunction flattenUnsubscriptionErrors(errors) {\n return errors.reduce(function (errs, err) { return errs.concat((err instanceof UnsubscriptionError) ? err.errors : err); }, []);\n}\n//# sourceMappingURL=Subscription.js.map\n","/** PURE_IMPORTS_START PURE_IMPORTS_END */\nexport function isObject(x) {\n return x !== null && typeof x === 'object';\n}\n//# sourceMappingURL=isObject.js.map\n","/** PURE_IMPORTS_START PURE_IMPORTS_END */\nexport var rxSubscriber = /*@__PURE__*/ (function () {\n return typeof Symbol === 'function'\n ? /*@__PURE__*/ Symbol('rxSubscriber')\n : '@@rxSubscriber_' + /*@__PURE__*/ Math.random();\n})();\nexport var $$rxSubscriber = rxSubscriber;\n//# sourceMappingURL=rxSubscriber.js.map\n","/** PURE_IMPORTS_START tslib,_util_isFunction,_Observer,_Subscription,_internal_symbol_rxSubscriber,_config,_util_hostReportError PURE_IMPORTS_END */\nimport * as tslib_1 from \"tslib\";\nimport { isFunction } from './util/isFunction';\nimport { empty as emptyObserver } from './Observer';\nimport { Subscription } from './Subscription';\nimport { rxSubscriber as rxSubscriberSymbol } from '../internal/symbol/rxSubscriber';\nimport { config } from './config';\nimport { hostReportError } from './util/hostReportError';\nvar Subscriber = /*@__PURE__*/ (function (_super) {\n tslib_1.__extends(Subscriber, _super);\n function Subscriber(destinationOrNext, error, complete) {\n var _this = _super.call(this) || this;\n _this.syncErrorValue = null;\n _this.syncErrorThrown = false;\n _this.syncErrorThrowable = false;\n _this.isStopped = false;\n switch (arguments.length) {\n case 0:\n _this.destination = emptyObserver;\n break;\n case 1:\n if (!destinationOrNext) {\n _this.destination = emptyObserver;\n break;\n }\n if (typeof destinationOrNext === 'object') {\n if (destinationOrNext instanceof Subscriber) {\n _this.syncErrorThrowable = destinationOrNext.syncErrorThrowable;\n _this.destination = destinationOrNext;\n destinationOrNext.add(_this);\n }\n else {\n _this.syncErrorThrowable = true;\n _this.destination = new SafeSubscriber(_this, destinationOrNext);\n }\n break;\n }\n default:\n _this.syncErrorThrowable = true;\n _this.destination = new SafeSubscriber(_this, destinationOrNext, error, complete);\n break;\n }\n return _this;\n }\n Subscriber.prototype[rxSubscriberSymbol] = function () { return this; };\n Subscriber.create = function (next, error, complete) {\n var subscriber = new Subscriber(next, error, complete);\n subscriber.syncErrorThrowable = false;\n return subscriber;\n };\n Subscriber.prototype.next = function (value) {\n if (!this.isStopped) {\n this._next(value);\n }\n };\n Subscriber.prototype.error = function (err) {\n if (!this.isStopped) {\n this.isStopped = true;\n this._error(err);\n }\n };\n Subscriber.prototype.complete = function () {\n if (!this.isStopped) {\n this.isStopped = true;\n this._complete();\n }\n };\n Subscriber.prototype.unsubscribe = function () {\n if (this.closed) {\n return;\n }\n this.isStopped = true;\n _super.prototype.unsubscribe.call(this);\n };\n Subscriber.prototype._next = function (value) {\n this.destination.next(value);\n };\n Subscriber.prototype._error = function (err) {\n this.destination.error(err);\n this.unsubscribe();\n };\n Subscriber.prototype._complete = function () {\n this.destination.complete();\n this.unsubscribe();\n };\n Subscriber.prototype._unsubscribeAndRecycle = function () {\n var _parentOrParents = this._parentOrParents;\n this._parentOrParents = null;\n this.unsubscribe();\n this.closed = false;\n this.isStopped = false;\n this._parentOrParents = _parentOrParents;\n return this;\n };\n return Subscriber;\n}(Subscription));\nexport { Subscriber };\nvar SafeSubscriber = /*@__PURE__*/ (function (_super) {\n tslib_1.__extends(SafeSubscriber, _super);\n function SafeSubscriber(_parentSubscriber, observerOrNext, error, complete) {\n var _this = _super.call(this) || this;\n _this._parentSubscriber = _parentSubscriber;\n var next;\n var context = _this;\n if (isFunction(observerOrNext)) {\n next = observerOrNext;\n }\n else if (observerOrNext) {\n next = observerOrNext.next;\n error = observerOrNext.error;\n complete = observerOrNext.complete;\n if (observerOrNext !== emptyObserver) {\n context = Object.create(observerOrNext);\n if (isFunction(context.unsubscribe)) {\n _this.add(context.unsubscribe.bind(context));\n }\n context.unsubscribe = _this.unsubscribe.bind(_this);\n }\n }\n _this._context = context;\n _this._next = next;\n _this._error = error;\n _this._complete = complete;\n return _this;\n }\n SafeSubscriber.prototype.next = function (value) {\n if (!this.isStopped && this._next) {\n var _parentSubscriber = this._parentSubscriber;\n if (!config.useDeprecatedSynchronousErrorHandling || !_parentSubscriber.syncErrorThrowable) {\n this.__tryOrUnsub(this._next, value);\n }\n else if (this.__tryOrSetError(_parentSubscriber, this._next, value)) {\n this.unsubscribe();\n }\n }\n };\n SafeSubscriber.prototype.error = function (err) {\n if (!this.isStopped) {\n var _parentSubscriber = this._parentSubscriber;\n var useDeprecatedSynchronousErrorHandling = config.useDeprecatedSynchronousErrorHandling;\n if (this._error) {\n if (!useDeprecatedSynchronousErrorHandling || !_parentSubscriber.syncErrorThrowable) {\n this.__tryOrUnsub(this._error, err);\n this.unsubscribe();\n }\n else {\n this.__tryOrSetError(_parentSubscriber, this._error, err);\n this.unsubscribe();\n }\n }\n else if (!_parentSubscriber.syncErrorThrowable) {\n this.unsubscribe();\n if (useDeprecatedSynchronousErrorHandling) {\n throw err;\n }\n hostReportError(err);\n }\n else {\n if (useDeprecatedSynchronousErrorHandling) {\n _parentSubscriber.syncErrorValue = err;\n _parentSubscriber.syncErrorThrown = true;\n }\n else {\n hostReportError(err);\n }\n this.unsubscribe();\n }\n }\n };\n SafeSubscriber.prototype.complete = function () {\n var _this = this;\n if (!this.isStopped) {\n var _parentSubscriber = this._parentSubscriber;\n if (this._complete) {\n var wrappedComplete = function () { return _this._complete.call(_this._context); };\n if (!config.useDeprecatedSynchronousErrorHandling || !_parentSubscriber.syncErrorThrowable) {\n this.__tryOrUnsub(wrappedComplete);\n this.unsubscribe();\n }\n else {\n this.__tryOrSetError(_parentSubscriber, wrappedComplete);\n this.unsubscribe();\n }\n }\n else {\n this.unsubscribe();\n }\n }\n };\n SafeSubscriber.prototype.__tryOrUnsub = function (fn, value) {\n try {\n fn.call(this._context, value);\n }\n catch (err) {\n this.unsubscribe();\n if (config.useDeprecatedSynchronousErrorHandling) {\n throw err;\n }\n else {\n hostReportError(err);\n }\n }\n };\n SafeSubscriber.prototype.__tryOrSetError = function (parent, fn, value) {\n if (!config.useDeprecatedSynchronousErrorHandling) {\n throw new Error('bad call');\n }\n try {\n fn.call(this._context, value);\n }\n catch (err) {\n if (config.useDeprecatedSynchronousErrorHandling) {\n parent.syncErrorValue = err;\n parent.syncErrorThrown = true;\n return true;\n }\n else {\n hostReportError(err);\n return true;\n }\n }\n return false;\n };\n SafeSubscriber.prototype._unsubscribe = function () {\n var _parentSubscriber = this._parentSubscriber;\n this._context = null;\n this._parentSubscriber = null;\n _parentSubscriber.unsubscribe();\n };\n return SafeSubscriber;\n}(Subscriber));\nexport { SafeSubscriber };\n//# sourceMappingURL=Subscriber.js.map\n","/** PURE_IMPORTS_START tslib,_Subscriber PURE_IMPORTS_END */\nimport * as tslib_1 from \"tslib\";\nimport { Subscriber } from '../Subscriber';\nexport function map(project, thisArg) {\n return function mapOperation(source) {\n if (typeof project !== 'function') {\n throw new TypeError('argument is not a function. Are you looking for `mapTo()`?');\n }\n return source.lift(new MapOperator(project, thisArg));\n };\n}\nvar MapOperator = /*@__PURE__*/ (function () {\n function MapOperator(project, thisArg) {\n this.project = project;\n this.thisArg = thisArg;\n }\n MapOperator.prototype.call = function (subscriber, source) {\n return source.subscribe(new MapSubscriber(subscriber, this.project, this.thisArg));\n };\n return MapOperator;\n}());\nexport { MapOperator };\nvar MapSubscriber = /*@__PURE__*/ (function (_super) {\n tslib_1.__extends(MapSubscriber, _super);\n function MapSubscriber(destination, project, thisArg) {\n var _this = _super.call(this, destination) || this;\n _this.project = project;\n _this.count = 0;\n _this.thisArg = thisArg || _this;\n return _this;\n }\n MapSubscriber.prototype._next = function (value) {\n var result;\n try {\n result = this.project.call(this.thisArg, value, this.count++);\n }\n catch (err) {\n this.destination.error(err);\n return;\n }\n this.destination.next(result);\n };\n return MapSubscriber;\n}(Subscriber));\n//# sourceMappingURL=map.js.map\n","import { DataFrameView, SelectableValue } from '@grafana/data';\nimport { DataSource } from 'DataSource';\nimport { ListAssetsQuery, ListAssociatedAssetsQuery, QueryType } from 'types';\nimport { AssetModelSummary, AssetSummary, DescribeAssetResult } from './queryResponseTypes';\nimport { AssetInfo, AssetPropertyInfo } from './types';\nimport { map } from 'rxjs/operators';\n\n/**\n * Keep a differnt cache for each region\n */\nexport class SitewiseCache {\n private models?: DataFrameView;\n private assetsById = new Map();\n private topLevelAssets?: DataFrameView;\n\n constructor(private ds: DataSource, private region: string) {}\n\n async getAssetInfo(id: string): Promise {\n const v = this.assetsById.get(id);\n if (v) {\n return Promise.resolve(v);\n }\n\n return this.ds\n .runQuery(\n {\n refId: 'getAssetInfo',\n queryType: QueryType.DescribeAsset,\n assetId: id,\n region: this.region,\n },\n 1000\n )\n .pipe(\n map((res) => {\n if (res.data.length) {\n const view = new DataFrameView(res.data[0]);\n if (view && view.length) {\n const info = frameToAssetInfo(view.get(0));\n this.assetsById.set(id, info);\n return info;\n }\n }\n throw 'asset not found';\n })\n )\n .toPromise();\n }\n\n getAssetInfoSync(id: string): AssetInfo | undefined {\n const v = this.assetsById.get(id);\n if (v) {\n return v;\n }\n try {\n (async () => await this.getAssetInfo(id))();\n } catch {}\n return this.assetsById.get(id);\n }\n\n async getModels(): Promise> {\n if (this.models) {\n return Promise.resolve(this.models);\n }\n\n return this.ds\n .runQuery({\n refId: 'getModels',\n queryType: QueryType.ListAssetModels,\n region: this.region,\n })\n .pipe(\n map((res) => {\n if (res.data.length) {\n this.models = new DataFrameView(res.data[0]);\n return this.models;\n }\n throw 'no models found';\n })\n )\n .toPromise();\n }\n\n // No cache for now\n async getAssetsOfType(modelId: string): Promise> {\n const query: ListAssetsQuery = {\n refId: 'getAssetsOfType',\n queryType: QueryType.ListAssets,\n filter: 'ALL',\n modelId,\n region: this.region,\n };\n return this.ds\n .runQuery(query, 1000)\n .pipe(\n map((res) => {\n if (res.data.length) {\n this.topLevelAssets = new DataFrameView(res.data[0]);\n return this.topLevelAssets;\n }\n throw 'no assets found';\n })\n )\n .toPromise();\n }\n\n async getAssociatedAssets(assetId: string, hierarchyId?: string): Promise> {\n const query: ListAssociatedAssetsQuery = {\n queryType: QueryType.ListAssociatedAssets,\n refId: 'associatedAssets',\n assetId: assetId,\n hierarchyId: hierarchyId,\n region: this.region,\n };\n\n return this.ds\n .runQuery(query, 1000)\n .pipe(\n map((res) => {\n if (res.data.length) {\n return new DataFrameView(res.data[0]);\n } else {\n throw 'no asset hierarchy found';\n }\n })\n )\n .toPromise();\n }\n\n async getTopLevelAssets(): Promise> {\n if (this.topLevelAssets) {\n return Promise.resolve(this.topLevelAssets);\n }\n const query: ListAssetsQuery = {\n refId: 'topLevelAssets',\n queryType: QueryType.ListAssets,\n filter: 'TOP_LEVEL',\n region: this.region,\n };\n return this.ds\n .runQuery(query, 1000)\n .pipe(\n map((res) => {\n if (res.data.length) {\n this.topLevelAssets = new DataFrameView(res.data[0]);\n return this.topLevelAssets;\n }\n throw 'no assets found';\n })\n )\n .toPromise();\n }\n\n async getAssetPickerOptions(): Promise>> {\n const options: Array> = [];\n try {\n const topLevel = await this.getTopLevelAssets();\n for (const asset of topLevel) {\n options.push({\n label: asset.name,\n value: asset.id,\n description: asset.arn,\n });\n }\n } catch (err) {\n console.log('Error reading top level assests', err);\n }\n\n // Also add recent values\n for (const asset of this.assetsById.values()) {\n options.push({\n label: asset.name,\n value: asset.id,\n description: asset.arn,\n });\n }\n return options;\n }\n}\n\nexport function frameToAssetInfo(res: DescribeAssetResult): AssetInfo {\n const properties: AssetPropertyInfo[] = JSON.parse(res.properties);\n const hierarchy: AssetPropertyInfo[] = JSON.parse(res.hierarchies); // has Id, Name\n\n for (const p of properties) {\n p.value = p.Id;\n p.label = p.Name;\n\n if (p.Unit) {\n p.label += ' (' + p.Unit + ')';\n }\n\n if (p.DataType) {\n p.description = p.DataType;\n if (p.Alias) {\n p.description += ' // ' + p.Alias;\n }\n }\n }\n\n return {\n ...res,\n properties,\n hierarchy: hierarchy.map((v) => ({\n label: v.Name,\n value: v.Id,\n })),\n };\n}\n\nexport function assetSummaryToAssetInfo(res: DataFrameView): AssetInfo[] {\n let results: AssetInfo[] = [];\n\n for (const info of res.toArray()) {\n const hierarchy: AssetPropertyInfo[] = JSON.parse(info.hierarchies); // has Id, Name\n const properties: AssetPropertyInfo[] = [];\n results.push({\n ...info,\n properties,\n hierarchy: hierarchy.map((v) => ({\n label: v.Name,\n value: v.Id,\n })),\n });\n }\n\n return results;\n}\n","import { ArrayVector, DataFrame, formatLabels, MutableDataFrame } from '@grafana/data';\n\nexport function getSchemaKey(frame: DataFrame): string {\n let key = frame.refId + '/' + frame.fields.length;\n for (const f of frame.fields) {\n key += '|' + f.name + ':' + f.type;\n if (f.labels) {\n key += formatLabels(f.labels);\n }\n }\n return key;\n}\n\n// TODO: this could likley use the builtin merge transformer, however it was behaving weirdly\n// with arrow time fields ;(\nexport function appendMatchingFrames(prev: DataFrame[], b: DataFrame[]): DataFrame[] {\n const byKey = new Map();\n const out: DataFrame[] = [];\n for (const f of prev) {\n if (!f.length) {\n continue;\n }\n\n const key = getSchemaKey(f);\n if (f instanceof MutableDataFrame) {\n byKey.set(key, f);\n out.push(f);\n } else {\n const frame = new MutableDataFrame();\n frame.meta = f.meta;\n frame.name = f.name;\n frame.refId = f.refId;\n\n // Arrow frames are not appending properly ???\n for (const field of f.fields) {\n const buffer: any[] = [];\n for (let i = 0; i < f.length; i++) {\n buffer.push(field.values.get(i));\n }\n frame.addField({\n ...field,\n values: new ArrayVector(buffer),\n });\n }\n\n byKey.set(key, frame);\n out.push(frame);\n }\n }\n\n for (const f of b) {\n if (!f.length) {\n continue;\n }\n const key = getSchemaKey(f);\n const old = byKey.get(key);\n if (old) {\n for (let i = 0; i < f.length; i++) {\n for (let idx = 0; idx < old.fields.length; idx++) {\n old.fields[idx].values.add(f.fields[idx].values.get(i));\n }\n }\n } else {\n out.push(f);\n }\n }\n return out;\n}\n","import { DataSourceInstanceSettings, ScopedVars, DataQueryResponse, DataQueryRequest, DataFrame } from '@grafana/data';\nimport { DataSourceWithBackend, getTemplateSrv } from '@grafana/runtime';\nimport { SitewiseCache } from 'sitewiseCache';\n\nimport { SitewiseQuery, SitewiseOptions, SitewiseCustomMeta, isPropertyQueryType, SitewiseNextQuery } from './types';\nimport { Observable } from 'rxjs';\nimport { getRequestLooper, MultiRequestTracker } from 'requestLooper';\nimport { appendMatchingFrames } from 'appendFrames';\n\nexport class DataSource extends DataSourceWithBackend {\n // Easy access for QueryEditor\n readonly options: SitewiseOptions;\n private cache = new Map();\n\n constructor(instanceSettings: DataSourceInstanceSettings) {\n super(instanceSettings);\n this.options = instanceSettings.jsonData;\n }\n\n /**\n * Get a region scoped cache\n */\n getCache(region?: string): SitewiseCache {\n if (!region || region === 'default') {\n region = this.options.defaultRegion || '';\n }\n let v = this.cache.get(region);\n if (!v) {\n v = new SitewiseCache(this, region);\n this.cache.set(region, v);\n }\n return v;\n }\n\n // This will support annotation queries for 7.2+\n annotations = {};\n\n /**\n * Do not execute queries that do not exist yet\n */\n filterQuery(query: SitewiseQuery): boolean {\n if (!query.queryType) {\n return false; // skip the query\n }\n if (isPropertyQueryType(query.queryType)) {\n return !!(query.assetId && query.propertyId);\n }\n return true; // keep the query\n }\n\n getQueryDisplayText(query: SitewiseQuery): string {\n const cache = this.getCache(query.region);\n let txt: string = query.queryType;\n if (query.assetId) {\n const info = cache.getAssetInfoSync(query.assetId);\n if (!info) {\n return txt + ' / ' + query.assetId;\n }\n txt += ' / ' + info.name;\n\n if (query.propertyId && info.properties) {\n const p = info.properties.find((v) => v.Id === query.propertyId);\n if (p) {\n txt += ' / ' + p.Name;\n } else {\n txt += ' / ' + query.propertyId;\n }\n }\n }\n return txt;\n }\n\n /**\n * Supports template variables for region, asset and property\n */\n applyTemplateVariables(query: SitewiseQuery, scopedVars: ScopedVars): SitewiseQuery {\n const templateSrv = getTemplateSrv();\n return {\n ...query,\n region: templateSrv.replace(query.region || '', scopedVars),\n assetId: templateSrv.replace(query.assetId || '', scopedVars),\n propertyId: templateSrv.replace(query.propertyId || '', scopedVars),\n };\n return query;\n }\n\n runQuery(query: SitewiseQuery, maxDataPoints?: number): Observable {\n // @ts-ignore\n return this.query({ targets: [query], requestId: `iot.${counter++}`, maxDataPoints });\n }\n\n query(request: DataQueryRequest): Observable {\n return getRequestLooper(request, {\n // Check for a \"nextToken\" in the response\n getNextQueries: (rsp: DataQueryResponse) => {\n if (rsp.data?.length) {\n const next: SitewiseNextQuery[] = [];\n for (const frame of rsp.data as DataFrame[]) {\n const meta = frame.meta?.custom as SitewiseCustomMeta;\n if (meta && meta.nextToken) {\n const query = request.targets.find((t) => t.refId === frame.refId);\n if (query) {\n next.push({\n ...query,\n nextToken: meta.nextToken,\n });\n }\n }\n }\n if (next.length) {\n return next;\n }\n }\n return undefined;\n },\n\n /**\n * The original request\n */\n query: (request: DataQueryRequest) => {\n return super.query(request);\n },\n\n /**\n * Process the results\n */\n process: (t: MultiRequestTracker, data: DataFrame[], isLast: boolean) => {\n if (t.data) {\n // append rows to fields with the same structure\n t.data = appendMatchingFrames(t.data, data);\n } else {\n t.data = data; // hang on to the results from the last query\n }\n return t.data;\n },\n\n /**\n * Callback that gets executed when unsubscribed\n */\n onCancel: (tracker: MultiRequestTracker) => {},\n });\n }\n}\n\nlet counter = 1000;\n","import { DataQuery, DataQueryRequest, DataQueryResponse, LoadingState, DataFrame } from '@grafana/data';\nimport { Observable, Subscription } from 'rxjs';\n\nexport interface MultiRequestTracker {\n fetchStartTime?: number; // The frontend clock\n fetchEndTime?: number; // The frontend clock\n data?: DataFrame[];\n}\n\nexport interface RequestLoopOptions {\n /**\n * If the response needs an additional request to execute, return it here\n */\n getNextQueries: (rsp: DataQueryResponse) => TQuery[] | undefined;\n\n /**\n * The datasource execute method\n */\n query: (req: DataQueryRequest) => Observable;\n\n /**\n * Process the results\n */\n process: (tracker: MultiRequestTracker, data: DataFrame[], isLast: boolean) => DataFrame[];\n\n /**\n * Callback that gets executed when unsubscribed\n */\n onCancel: (tracker: MultiRequestTracker) => void;\n}\n\n/**\n * Continue executing requests as long as `getNextQuery` returns a query\n */\nexport function getRequestLooper(\n req: DataQueryRequest,\n options: RequestLoopOptions\n): Observable {\n return new Observable((subscriber) => {\n let nextQueries: T[] | undefined = undefined;\n let subscription: Subscription | undefined = undefined;\n const tracker: MultiRequestTracker = {\n fetchStartTime: Date.now(),\n fetchEndTime: undefined,\n };\n let loadingState: LoadingState | undefined = LoadingState.Loading;\n let count = 1;\n\n // Single observer gets reused for each request\n const observer = {\n next: (rsp: DataQueryResponse) => {\n tracker.fetchEndTime = Date.now();\n loadingState = rsp.state;\n if (loadingState !== LoadingState.Error) {\n nextQueries = options.getNextQueries(rsp);\n loadingState = nextQueries ? LoadingState.Streaming : LoadingState.Done;\n }\n const data = options.process(tracker, rsp.data, !!!nextQueries);\n subscriber.next({ ...rsp, data, state: loadingState, key: req.requestId });\n },\n error: (err: any) => {\n subscriber.error(err);\n },\n complete: () => {\n if (subscription) {\n subscription.unsubscribe();\n subscription = undefined;\n }\n\n // Let the previous request finish first\n if (nextQueries) {\n tracker.fetchEndTime = undefined;\n tracker.fetchStartTime = Date.now();\n subscription = options\n .query({\n ...req,\n requestId: `${req.requestId}.${++count}`,\n startTime: tracker.fetchStartTime,\n targets: nextQueries,\n })\n .subscribe(observer);\n nextQueries = undefined;\n } else {\n subscriber.complete();\n }\n },\n };\n\n // First request\n subscription = options.query(req).subscribe(observer);\n\n return () => {\n nextQueries = undefined;\n observer.complete();\n if (!tracker.fetchEndTime) {\n options.onCancel(tracker);\n }\n };\n });\n}\n","import React, { PureComponent } from 'react';\nimport { MetadataInspectorProps, DataFrame } from '@grafana/data';\nimport { DataSource } from '../DataSource';\nimport { SitewiseQuery, SitewiseOptions, SitewiseCustomMeta } from '../types';\nimport { Tag } from '@grafana/ui';\n\nexport type Props = MetadataInspectorProps;\n\nexport class MetaInspector extends PureComponent {\n state = { index: 0 };\n\n renderInfo = (frame: DataFrame, idx: number) => {\n const custom = frame.meta?.custom as SitewiseCustomMeta;\n if (!custom) {\n return null;\n }\n\n return (\n
\n {custom.resolution && (\n
\n

Resolution

\n \n
\n
\n
\n )}\n\n {custom.aggregates?.length && (\n
\n

Aggregates

\n {custom.aggregates.map((agg) => {\n return (\n <>\n  \n \n );\n })}\n
\n )}\n
\n );\n };\n\n render() {\n const { data } = this.props;\n if (!data || !data.length) {\n return
No Data
;\n }\n return (\n
\n {data.map((frame, idx) => {\n return this.renderInfo(frame, idx);\n })}\n
\n );\n }\n}\n","import { SelectableValue } from '@grafana/data';\n\nexport const standardRegions = [\n 'ap-east-1',\n 'ap-northeast-1',\n 'ap-northeast-2',\n 'ap-northeast-3',\n 'ap-south-1',\n 'ap-southeast-1',\n 'ap-southeast-2',\n 'ca-central-1',\n 'cn-north-1',\n 'cn-northwest-1',\n 'eu-central-1',\n 'eu-north-1',\n 'eu-west-1',\n 'eu-west-2',\n 'eu-west-3',\n 'me-south-1',\n 'sa-east-1',\n 'us-east-1',\n 'us-east-2',\n 'us-gov-east-1',\n 'us-gov-west-1',\n 'us-iso-east-1',\n 'us-isob-east-1',\n 'us-west-1',\n 'us-west-2',\n 'Edge',\n];\n\nexport const standardRegionOptions: Array> = standardRegions.map((v) => ({\n value: v,\n label: v,\n}));\n","import React, { PureComponent, ChangeEvent } from 'react';\nimport {\n onUpdateDatasourceJsonDataOption,\n onUpdateDatasourceJsonDataOptionSelect,\n onUpdateDatasourceResetOption,\n SelectableValue,\n updateDatasourcePluginJsonDataOption,\n updateDatasourcePluginSecureJsonDataOption,\n} from '@grafana/data';\nimport { SitewiseOptions, SitewiseSecureJsonData } from '../types';\nimport { ConnectionConfig, ConnectionConfigProps } from '@grafana/aws-sdk';\nimport { Alert, Button, FieldSet, InlineField, InlineFieldRow, Input, Select } from '@grafana/ui';\nimport { standardRegions } from '../regions';\n\nexport type Props = ConnectionConfigProps;\n\nconst edgeAuthMethods: Array> = [\n { value: 'default', label: 'Standard', description: 'Use the authentication provider configured above' },\n { value: 'linux', label: 'Linux', description: 'Linux-based authentication' },\n { value: 'ldap', label: 'LDAP', description: 'LDAP-based authentication' },\n];\n\nexport class ConfigEditor extends PureComponent {\n constructor(props: Props) {\n super(props);\n this.state = {};\n }\n\n onUserChange = (event: ChangeEvent) => {\n updateDatasourcePluginJsonDataOption(this.props, 'edgeAuthUser', event.target.value);\n };\n\n onPasswordChange = (event: ChangeEvent) => {\n const { options, onOptionsChange } = this.props;\n onOptionsChange({\n ...options,\n secureJsonData: {\n edgeAuthPass: event.target.value,\n },\n });\n };\n\n onResetPassword = () => {\n const { options, onOptionsChange } = this.props;\n onOptionsChange({\n ...options,\n secureJsonFields: {\n ...options.secureJsonFields,\n password: false,\n },\n secureJsonData: {\n ...options.secureJsonData,\n edgeAuthPass: '',\n },\n });\n };\n\n renderEdgeConfig() {\n const { options } = this.props;\n const { jsonData } = options;\n const { endpoint } = jsonData;\n\n const edgeAuthMode = edgeAuthMethods.find((f) => f.value === jsonData.edgeAuthMode) ?? edgeAuthMethods[0];\n const hasEdgeAuth = edgeAuthMode !== edgeAuthMethods[0];\n const labelWidth = 28;\n const regions = standardRegions.map((value) => ({ value, label: value }));\n\n return (\n <>\n {hasEdgeAuth && (\n
\n \n \n \n \n region.value === options.jsonData.defaultRegion)}\n options={regions}\n defaultValue={options.jsonData.defaultRegion}\n allowCustomValue={true}\n onChange={onUpdateDatasourceJsonDataOptionSelect(this.props, 'defaultRegion')}\n formatCreateLabel={(r) => `Use region: ${r}`}\n />\n \n
\n )}\n {!hasEdgeAuth && }\n\n
\n {!endpoint && }\n \n \n {\n updateDatasourcePluginJsonDataOption(this.props, 'edgeAuthMode', v.value);\n }}\n />\n \n \n {hasEdgeAuth && (\n <>\n \n \n \n \n \n \n \n \n \n \n \n )}\n \n \n {options.secureJsonFields?.cert ? (\n \n Reset\n \n ) : (\n {\n updateDatasourcePluginSecureJsonDataOption(this.props as any, 'cert', event.target.value);\n }}\n placeholder=\"Begins with -----BEGIN CERTIFICATE------\"\n required\n />\n )}\n \n \n
\n \n );\n }\n\n // Simple\n render() {\n const { options } = this.props;\n if (options.jsonData.defaultRegion === 'Edge') {\n return this.renderEdgeConfig();\n }\n return ;\n }\n}\n","import { SelectableValue } from '@grafana/data';\nimport {\n QueryType,\n SitewiseQuery,\n AggregateType,\n AssetPropertyAggregatesQuery,\n ListAssetsQuery,\n ListAssetModelsQuery,\n AssetPropertyValueQuery,\n AssetPropertyValueHistoryQuery,\n SiteWiseResolution,\n AssetInfo,\n AssetPropertyInfo,\n ListAssociatedAssetsQuery,\n isListAssociatedAssetsQuery,\n} from './types';\n\nexport interface QueryTypeInfo extends SelectableValue {\n value: QueryType; // not optional\n defaultQuery: Partial;\n helpURL: string;\n}\n\nexport const siteWisteQueryTypes: QueryTypeInfo[] = [\n {\n label: 'Get property value aggregates',\n value: QueryType.PropertyAggregate,\n description: `Gets aggregated values for an asset property.`,\n defaultQuery: {\n resolution: SiteWiseResolution.Auto,\n aggregates: [AggregateType.AVERAGE],\n timeOrdering: 'ASCENDING',\n } as AssetPropertyAggregatesQuery,\n helpURL: 'https://docs.aws.amazon.com/iot-sitewise/latest/APIReference/API_GetAssetPropertyAggregates.html',\n },\n {\n label: 'Get property value history',\n value: QueryType.PropertyValueHistory,\n description: `Gets the history of an asset property's value.`,\n defaultQuery: {\n timeOrdering: 'ASCENDING',\n } as AssetPropertyValueHistoryQuery,\n helpURL: 'https://docs.aws.amazon.com/iot-sitewise/latest/APIReference/API_GetAssetPropertyAggregates.html',\n },\n {\n label: 'Get property value',\n value: QueryType.PropertyValue,\n description: `Gets an asset property's current value.`,\n defaultQuery: {} as AssetPropertyValueQuery,\n helpURL: 'https://docs.aws.amazon.com/iot-sitewise/latest/APIReference/API_GetAssetPropertyAggregates.html',\n },\n {\n label: 'List assets',\n value: QueryType.ListAssets,\n description: 'Retrieves a paginated list of asset summaries.',\n defaultQuery: {\n filter: 'TOP_LEVEL',\n } as ListAssetsQuery,\n helpURL: 'https://docs.aws.amazon.com/iot-sitewise/latest/APIReference/API_GetAssetPropertyAggregates.html',\n },\n {\n label: 'List asset models',\n value: QueryType.ListAssetModels,\n description: 'Retrieves this list of all asset models',\n defaultQuery: {} as ListAssetModelsQuery,\n helpURL: 'https://docs.aws.amazon.com/iot-sitewise/latest/APIReference/API_GetAssetPropertyAggregates.html',\n },\n {\n label: 'List associated assets',\n value: QueryType.ListAssociatedAssets,\n description: 'Retrieves a paginated list of associated assets.',\n defaultQuery: {} as ListAssociatedAssetsQuery,\n helpURL: 'https://docs.aws.amazon.com/iot-sitewise/latest/APIReference/API_ListAssociatedAssets.html',\n },\n];\n\nexport function changeQueryType(q: SitewiseQuery, info: QueryTypeInfo): SitewiseQuery {\n if (q.queryType === info.value) {\n return q; // no change;\n }\n const copy = {\n ...info.defaultQuery,\n ...q,\n queryType: info.value,\n };\n const a = copy as any;\n\n if (isListAssociatedAssetsQuery(copy)) {\n delete a.timeOrdering;\n delete a.filter;\n delete a.resolution;\n delete a.aggregates;\n }\n\n return copy;\n}\n\nexport function getAssetProperty(asset?: AssetInfo, propId?: string): AssetPropertyInfo | undefined {\n if (!asset?.properties || !propId) {\n return undefined;\n }\n return asset.properties.find((p) => p.Id === propId);\n}\n\nexport function getDefaultAggregate(prop?: AssetPropertyInfo): AggregateType {\n if (prop?.DataType === 'STRING') {\n return AggregateType.COUNT;\n }\n return AggregateType.AVERAGE;\n}\n","import React, { PureComponent } from 'react';\nimport { DataFrameView, SelectableValue } from '@grafana/data';\nimport { ListAssetsQuery } from 'types';\nimport { InlineField, Select } from '@grafana/ui';\nimport { SitewiseQueryEditorProps } from './types';\nimport { AssetModelSummary } from 'queryResponseTypes';\nimport { firstLabelWith } from './QueryEditor';\n\ntype Props = SitewiseQueryEditorProps;\n\ninterface State {\n models?: DataFrameView;\n}\n\nconst filters = [\n {\n label: 'Top Level',\n value: 'TOP_LEVEL',\n description: 'The list includes only top-level assets in the asset hierarchy tree',\n },\n { label: 'All', value: 'ALL', description: 'The list includes all assets for a given asset model ID' },\n];\n\nexport class ListAssetsQueryEditor extends PureComponent {\n state: State = {};\n\n async componentDidMount() {\n const { query } = this.props;\n const cache = this.props.datasource.getCache(query.region);\n const models = await cache.getModels();\n this.setState({ models });\n }\n\n onAssetModelIdChange = (sel: SelectableValue) => {\n const { onChange, query, onRunQuery } = this.props;\n onChange({ ...query, modelId: sel.value! });\n onRunQuery();\n };\n\n onFilterChange = (sel: SelectableValue) => {\n const { onChange, query, onRunQuery } = this.props;\n onChange({ ...query, filter: sel.value as 'ALL' | 'TOP_LEVEL' });\n onRunQuery();\n };\n\n render() {\n const { query } = this.props;\n const { models } = this.state;\n const modelIds = models\n ? models.map((m) => ({\n value: m.id,\n label: m.name,\n description: m.description,\n }))\n : [];\n let currentModel = modelIds.find((m) => m.value === query.modelId);\n if (query.modelId && !currentModel) {\n currentModel = {\n value: query.modelId,\n label: 'Model ID: ' + query.modelId,\n description: '',\n };\n }\n\n return (\n <>\n
\n \n `Model ID: ${txt}`}\n menuPlacement=\"bottom\"\n />\n \n
\n
\n \n v.value === query.filter) || filters[0]}\n onChange={this.onFilterChange}\n placeholder=\"Select a property\"\n menuPlacement=\"bottom\"\n />\n \n
\n \n );\n }\n}\n","import React from 'react';\nimport { cx } from 'emotion';\n\nexport interface CardProps {\n logoUrl?: string;\n title: string;\n description?: string;\n labels?: React.ReactNode;\n actions?: React.ReactNode;\n onClick?: () => void;\n ariaLabel?: string;\n className?: string;\n}\n\nexport const Card: React.FC = ({\n logoUrl,\n title,\n description,\n labels,\n actions,\n onClick,\n ariaLabel,\n className,\n}) => {\n const mainClassName = cx('add-data-source-item', className);\n\n return (\n
\n {logoUrl && }\n
\n {title}\n {description && {description}}\n {labels &&
{labels}
}\n
\n {actions &&
{actions}
}\n
\n );\n};\n","import React, { FunctionComponent } from 'react';\nimport { AssetInfo } from '../../../types';\nimport { AssetSummary } from '../../../queryResponseTypes';\nimport { Button } from '@grafana/ui';\nimport { Card } from 'common/Card';\n\nexport interface Props {\n asset: AssetInfo | AssetSummary;\n onSelect: (assetId: string) => void;\n onInspect?: (assetId: string) => void;\n}\n\nexport const AssetListItem: FunctionComponent = ({ asset, onInspect, onSelect }) => {\n return (\n onSelect(asset.id)}\n actions={\n <>\n {onInspect && (\n {\n event.stopPropagation();\n onInspect(asset.id);\n }}\n icon=\"folder\"\n >\n BROWSE\n \n )}\n\n \n \n }\n />\n );\n};\n","import { AssetInfo } from '../../../types';\nimport { AssetSummary } from '../../../queryResponseTypes';\nimport React, { FunctionComponent } from 'react';\nimport { GrafanaTheme } from '@grafana/data';\nimport { CollapsableSection, Label, Spinner, styleMixins, stylesFactory, useTheme } from '@grafana/ui';\nimport { css } from 'emotion';\nimport { AssetListItem } from './AssetListItem';\n\nconst getStyles = stylesFactory((theme: GrafanaTheme) => {\n return {\n container: css`\n width: 100%;\n height: auto;\n `,\n listItem: css`\n ${styleMixins.listItem(theme)}\n `,\n };\n});\n\nexport interface ListInfo {\n name?: string;\n id?: string;\n description?: string;\n}\n\nexport interface Props {\n listInfo?: ListInfo;\n search?: string;\n assets?: Array;\n onSelect: (assetId: string) => void;\n onInspect?: (assetId: string) => void;\n open?: boolean;\n}\n\nexport const AssetList: FunctionComponent = ({ listInfo, assets, search, onSelect, onInspect, open = true }) => {\n const theme = useTheme();\n const style = getStyles(theme);\n\n const label = listInfo\n ? (() as unknown as string)\n : '';\n\n const renderChildren = () => {\n if (!assets) {\n return (\n
\n \n Loading assets...\n
\n );\n }\n if (!assets.length) {\n return <>; // nothing\n }\n\n const lowerSearch = search ? search.toLowerCase() : '';\n const filtered = search ? assets.filter((a) => a.name.toLowerCase().indexOf(lowerSearch) >= 0) : assets;\n if (!filtered.length && search) {\n return
No assets match: {search}
;\n }\n\n return (\n
\n {filtered.map((c) => {\n return ;\n })}\n
\n );\n };\n\n if (!listInfo) {\n return renderChildren();\n }\n\n return (\n
\n \n {renderChildren()}\n \n
\n );\n};\n","import React, { Component } from 'react';\nimport { Input, Select, Spinner } from '@grafana/ui';\nimport { AssetInfo } from '../../types';\nimport { SitewiseCache } from 'sitewiseCache';\nimport { DataFrameView, SelectableValue } from '@grafana/data';\nimport { AssetModelSummary, AssetSummary } from 'queryResponseTypes';\nimport { AssetList } from './hierarchy/AssetList';\n\nexport interface Props {\n cache: SitewiseCache;\n asset?: AssetInfo; // The incoming value\n onAssetChanged: (assetId?: string) => void;\n}\n\ninterface State {\n modelId?: string;\n models?: DataFrameView;\n assets?: DataFrameView;\n search?: string;\n}\n\nexport class BrowseModels extends Component {\n state: State = {};\n\n async componentDidMount() {\n const { asset, cache } = this.props;\n const update: State = {\n models: await cache.getModels(),\n };\n update.modelId = asset?.model_id ?? update.models?.get(0).id;\n update.assets = await cache.getAssetsOfType(update.modelId!);\n this.setState(update);\n }\n\n onModelIdChange = async (sel: SelectableValue) => {\n const modelId = sel.value;\n const assets = modelId ? await this.props.cache.getAssetsOfType(modelId) : undefined;\n this.setState({ modelId, assets });\n };\n\n onAssetChanged = async (assetId?: string) => {\n if (assetId) {\n this.props.onAssetChanged(assetId);\n }\n };\n\n onSearchChange = (event: React.FormEvent) => {\n this.setState({ search: event.currentTarget.value });\n };\n\n render() {\n const { models, assets, modelId, search } = this.state;\n if (!models) {\n return (\n
\n \n Loading models...\n
\n );\n }\n const modelOptions = models.map((m) => ({\n value: m.id,\n label: m.name,\n description: m.description,\n }));\n\n const selectedModel = modelOptions.find((v) => v.value === modelId);\n\n return (\n <>\n
\n

Model:

\n \n
\n
\n

Assets:

\n {selectedModel && assets ? (\n <>\n {assets.length > 2 && (\n <>\n \n
\n \n )}\n \n \n ) : (\n <>\n

\n

No assets found.
\n \n )}\n
\n \n );\n }\n}\n","import React, { FunctionComponent, useState, useEffect } from 'react';\nimport { css } from 'emotion';\nimport { GrafanaTheme } from '@grafana/data';\nimport { AssetSummary } from '../../../queryResponseTypes';\nimport { styleMixins, stylesFactory, useTheme } from '@grafana/ui';\nimport { AssetInfo } from '../../../types';\nimport { SitewiseCache } from '../../../sitewiseCache';\nimport { AssetList } from './AssetList';\n\nconst getStyles = stylesFactory((theme: GrafanaTheme) => {\n return {\n container: css`\n width: 100%;\n height: auto;\n margin-top: 10px;\n `,\n listItem: css`\n ${styleMixins.listItem(theme)}\n `,\n };\n});\n\nexport interface HierarchyInfo {\n name?: string;\n id?: string;\n description?: string;\n}\n\n// either must have children injected, or have asset + cache\nexport interface Props {\n asset?: AssetInfo | AssetSummary;\n hierarchy: HierarchyInfo;\n children?: AssetSummary[];\n cache?: SitewiseCache;\n search?: string;\n onSelect: (assetId: string) => void;\n onInspect: (assetId: string) => void;\n}\n\nexport const AssetHierarchyList: FunctionComponent = ({\n asset,\n hierarchy,\n children,\n cache,\n search,\n onSelect,\n onInspect,\n}) => {\n const [currentChildren, setChildren] = useState(children);\n\n const theme = useTheme();\n const style = getStyles(theme);\n\n useEffect(() => {\n // try to load children if none passed in\n if (!children && asset && cache) {\n const fetchData = async () => {\n const results = await cache.getAssociatedAssets(asset.id, hierarchy.id);\n setChildren(results.toArray());\n };\n fetchData();\n }\n }, [children, asset, cache, hierarchy.id]);\n\n return (\n
\n \n
\n );\n};\n","import React, { Component } from 'react';\nimport { assetSummaryToAssetInfo, SitewiseCache } from '../../sitewiseCache';\nimport { AssetInfo } from '../../types';\nimport { SelectableValue } from '@grafana/data';\nimport { Input, Select } from '@grafana/ui';\nimport { AssetHierarchyList } from './hierarchy/AssetHierarchyList';\nimport { AssetListItem } from './hierarchy/AssetListItem';\nimport { AssetList } from './hierarchy/AssetList';\n\nexport interface State {\n assets: Array>;\n asset?: AssetInfo;\n parents?: AssetInfo[];\n search?: string;\n}\n\nexport interface Props {\n cache: SitewiseCache;\n asset?: AssetInfo; // The incoming value\n onAssetSelected: (assetId?: string) => void;\n}\n\nexport class BrowseHierarchy extends Component {\n state: State = { assets: [] };\n\n async componentDidMount() {\n const { asset, cache } = this.props;\n\n const parentInfo = asset ? await this.getParentInfo(asset.id) : undefined;\n\n const update: State = {\n ...this.state,\n asset: asset,\n assets: await cache.getAssetPickerOptions(),\n parents: parentInfo,\n };\n this.setState(update);\n }\n\n getParentInfo = async (assetId: string): Promise => {\n const { cache } = this.props;\n\n const parentSummaries = await cache.getAssociatedAssets(assetId);\n return assetSummaryToAssetInfo(parentSummaries);\n };\n\n onSetAssetId = async (assetId?: string) => {\n await this.setSelectedAssetInfo(assetId);\n };\n\n setSelectedAssetInfo = async (assetId?: string) => {\n const { cache } = this.props;\n if (assetId) {\n this.setState({\n ...this.state,\n asset: await cache.getAssetInfo(assetId),\n assets: await cache.getAssetPickerOptions(),\n parents: await this.getParentInfo(assetId),\n });\n }\n };\n\n onAssetChange = async (sel: SelectableValue) => {\n await this.setSelectedAssetInfo(sel.value);\n };\n\n onAssetSelected = async (assetId?: string) => {\n if (assetId) {\n this.props.onAssetSelected(assetId);\n }\n };\n\n onSearchChange = (event: React.FormEvent) => {\n this.setState({ search: event.currentTarget.value });\n };\n\n renderHierarchies = () => {\n const { asset, search } = this.state;\n if (!asset) {\n return;\n }\n if (!asset.hierarchy.length) {\n return
No hierarchies found for asset.
;\n }\n\n return (\n <>\n
Asset Hierarchies:
\n
\n \n
\n\n {asset.hierarchy.map((h) => {\n return (\n \n );\n })}\n
\n \n );\n };\n\n renderParents = () => {\n const { parents } = this.state;\n\n return (\n <>\n
Parents:
\n {parents ? (\n \n ) : (\n
No parents found.
\n )}\n \n );\n };\n\n render() {\n const { asset, assets } = this.state;\n\n let current = asset ? assets.find((v) => v.value === asset.id) : undefined;\n if (!current && asset) {\n current = { label: asset.name, value: asset.id, description: asset.arn };\n }\n\n return (\n
\n {asset ? (\n <>\n \n

\n

Selected Asset:
\n this.onAssetSelected(asset?.id)} />\n \n ) : (\n `Asset ID: ${txt}`}\n menuPlacement=\"bottom\"\n />\n )}\n
\n {this.renderHierarchies()}\n
\n );\n }\n}\n","import React, { Component } from 'react';\nimport { Button, Icon, Modal, Spinner, Tab, TabContent, TabsBar } from '@grafana/ui';\nimport { AssetInfo } from '../../types';\nimport { DataSource } from 'DataSource';\nimport { SitewiseCache } from 'sitewiseCache';\nimport { BrowseModels } from './BrowseModels';\nimport { BrowseHierarchy } from './BrowseHierarchy';\n\nexport interface Props {\n datasource: DataSource;\n assetId?: string; // The incoming value\n region?: string;\n onAssetChanged: (assetId?: string) => void;\n}\n\ninterface State {\n isOpen: boolean;\n tab: 'Modal' | 'Hierarchy';\n cache?: SitewiseCache;\n asset?: AssetInfo;\n}\n\nexport const ModalHeader = () => {\n return (\n
\n \n Asset Browser\n
\n );\n};\n\nexport class AssetBrowser extends Component {\n state: State = { isOpen: false, tab: 'Hierarchy' };\n\n async componentDidMount() {\n const { assetId, region } = this.props;\n const cache = this.props.datasource.getCache(region);\n const asset = assetId ? await cache.getAssetInfo(assetId) : undefined;\n this.setState({ cache, asset });\n }\n\n async componentDidUpdate(oldProps: Props) {\n let update: State = { ...this.state };\n let shouldUpdate = false;\n\n if (this.props.region !== oldProps.region) {\n shouldUpdate = true;\n update.cache = this.props.datasource.getCache(this.props.region);\n }\n\n if (this.props.assetId !== oldProps.assetId) {\n const { cache } = this.state;\n const { assetId } = this.props;\n shouldUpdate = true;\n // Asset changed from the parent... reset state\n update.asset = assetId ? await cache!.getAssetInfo(assetId) : undefined;\n }\n\n if (shouldUpdate) {\n this.setState(update);\n }\n }\n\n onSelectAsset = (assetId?: string) => {\n this.props.onAssetChanged(assetId);\n this.setState({ isOpen: false });\n };\n\n renderBody() {\n const { cache, tab, asset } = this.state;\n if (!cache) {\n return (\n
\n \n Loading...\n
\n );\n }\n\n switch (tab) {\n case 'Hierarchy':\n return ;\n case 'Modal':\n return ;\n }\n }\n\n render() {\n const { isOpen, tab } = this.state;\n\n return (\n <>\n \n this.setState({ isOpen: true }, () => {\n console.log(this.state);\n })\n }\n >\n Explore\n \n } isOpen={isOpen} onDismiss={() => this.setState({ isOpen: false })}>\n
\n
\n \n this.setState({ tab: 'Hierarchy' })}\n />\n this.setState({ tab: 'Modal' })}\n />\n \n \n
{this.renderBody()}
\n
\n
\n
\n
\n \n );\n }\n}\n","import React, { PureComponent } from 'react';\n\nimport difference from 'lodash/difference';\n\nimport { Select } from '@grafana/ui';\n\nimport { Registry, SelectableValue } from '@grafana/data';\nimport { AggregateType, AssetPropertyInfo } from 'types';\n\ninterface Props {\n assetPropInfo?: AssetPropertyInfo;\n onChange: (stats: AggregateType[]) => void;\n stats: AggregateType[];\n allowMultiple?: boolean;\n defaultStat?: AggregateType;\n className?: string;\n menuPlacement?: 'auto' | 'bottom' | 'top';\n}\n\n//type AggChecker = (p:AssetPropertyInfo) => boolean;\nconst AnyTypeOK = (p: AssetPropertyInfo) => true;\nconst OnlyNumbers = (p: AssetPropertyInfo) => p.DataType !== 'STRING';\n\nexport const aggReg = new Registry(() => [\n { id: AggregateType.AVERAGE, name: 'Average', isValid: OnlyNumbers },\n { id: AggregateType.COUNT, name: 'Count', isValid: AnyTypeOK },\n { id: AggregateType.MAXIMUM, name: 'Max', isValid: OnlyNumbers },\n { id: AggregateType.MINIMUM, name: 'Min', isValid: OnlyNumbers },\n { id: AggregateType.SUM, name: 'Sum', isValid: OnlyNumbers },\n { id: AggregateType.STANDARD_DEVIATION, name: 'Stddev', description: 'Standard Deviation', isValid: OnlyNumbers },\n]);\n\nexport class AggregatePicker extends PureComponent {\n static defaultProps: Partial = {\n allowMultiple: true,\n };\n\n componentDidMount() {\n this.checkInput();\n }\n\n componentDidUpdate(prevProps: Props) {\n this.checkInput();\n }\n\n checkInput = () => {\n const { stats, allowMultiple, defaultStat, onChange } = this.props;\n\n const current = aggReg.list(stats);\n if (current.length !== stats.length) {\n const found = current.map((v) => v.id);\n const notFound = difference(stats, found);\n console.warn('Unknown stats', notFound, stats);\n onChange(current.map((stat) => stat.id));\n }\n\n // Make sure there is only one\n if (!allowMultiple && stats.length > 1) {\n console.warn('Removing extra stat', stats);\n onChange([stats[0]]);\n }\n\n // Set the reducer from callback\n if (defaultStat && stats.length < 1) {\n onChange([defaultStat]);\n }\n };\n\n onSelectionChange = (item: SelectableValue) => {\n const { onChange } = this.props;\n if (Array.isArray(item)) {\n onChange(item.map((v) => v.value));\n } else {\n onChange(item && item.value ? [item.value] : []);\n }\n };\n\n render() {\n const { stats, allowMultiple, defaultStat, className, menuPlacement, assetPropInfo } = this.props;\n\n const select = aggReg.selectOptions(stats);\n if (assetPropInfo && assetPropInfo.DataType === 'STRING') {\n select.options = aggReg.list().filter((a) => a.isValid(assetPropInfo));\n }\n return (\n \n );\n }\n}\n","import React, { PureComponent } from 'react';\nimport { SelectableValue } from '@grafana/data';\nimport {\n SiteWiseTimeOrder,\n AssetPropertyValueHistoryQuery,\n AssetPropertyAggregatesQuery,\n SiteWiseQuality,\n} from 'types';\nimport { InlineField, Select } from '@grafana/ui';\nimport { SitewiseQueryEditorProps } from './types';\nimport { firstLabelWith } from './QueryEditor';\n\ntype Props = SitewiseQueryEditorProps;\n\nconst qualities: Array> = [\n { value: SiteWiseQuality.ANY, label: 'ANY' },\n { value: SiteWiseQuality.GOOD, label: 'GOOD' },\n { value: SiteWiseQuality.BAD, label: 'BAD' },\n { value: SiteWiseQuality.UNCERTAIN, label: 'UNCERTAIN' },\n];\n\nconst ordering: Array> = [\n { value: SiteWiseTimeOrder.ASCENDING, label: 'ASCENDING' },\n { value: SiteWiseTimeOrder.DESCENDING, label: 'DESCENDING' },\n];\n\nexport class QualityAndOrderRow extends PureComponent {\n onQualityChange = (sel: SelectableValue) => {\n const { onChange, query, onRunQuery } = this.props;\n onChange({ ...query, quality: sel.value });\n onRunQuery();\n };\n\n onOrderChange = (sel: SelectableValue) => {\n const { onChange, query, onRunQuery } = this.props;\n onChange({ ...query, timeOrdering: sel.value });\n onRunQuery();\n };\n\n onMaxPageAggregations = (event: React.FormEvent) => {\n const { onChange, query, onRunQuery } = this.props;\n\n onChange({ ...query, maxPageAggregations: +event.currentTarget.value });\n onRunQuery();\n };\n\n render() {\n const { query } = this.props;\n\n return (\n <>\n
\n \n v.value === query.quality) ?? qualities[0]}\n onChange={this.onQualityChange}\n isSearchable={true}\n menuPlacement=\"bottom\"\n />\n \n \n v.value === query.timeOrdering) ?? ordering[0]}\n onChange={this.onOrderChange}\n isSearchable={true}\n menuPlacement=\"bottom\"\n />\n \n {/**/}\n {/* */}\n {/**/}\n
\n \n );\n }\n}\n","import React, { PureComponent } from 'react';\nimport { SelectableValue } from '@grafana/data';\nimport {\n SitewiseQuery,\n AssetInfo,\n AssetPropertyAggregatesQuery,\n AggregateType,\n SiteWiseResolution,\n isAssetPropertyAggregatesQuery,\n isAssetPropertyValueHistoryQuery,\n AssetPropertyInfo,\n ListAssociatedAssetsQuery,\n isListAssociatedAssetsQuery,\n} from 'types';\nimport { InlineField, Select } from '@grafana/ui';\nimport { SitewiseQueryEditorProps } from './types';\nimport { AssetBrowser } from '../browser/AssetBrowser';\nimport { AggregatePicker, aggReg } from '../AggregatePicker';\nimport { getAssetProperty, getDefaultAggregate } from 'queryInfo';\nimport { QualityAndOrderRow } from './QualityAndOrderRow';\nimport { firstLabelWith } from './QueryEditor';\n\ntype Props = SitewiseQueryEditorProps;\n\nconst resolutions: Array> = [\n {\n value: SiteWiseResolution.Auto,\n label: 'Auto',\n description:\n 'Picks a resolution based on the time window. ' +\n 'Will switch to raw data if higher than 1m resolution is needed',\n },\n { value: SiteWiseResolution.Min, label: 'Minute', description: '1 point every minute' },\n { value: SiteWiseResolution.Hour, label: 'Hour', description: '1 point every hour' },\n { value: SiteWiseResolution.Day, label: 'Day', description: '1 point every day' },\n];\n\ninterface State {\n asset?: AssetInfo;\n property?: AssetPropertyInfo;\n assets: Array>;\n loading: boolean;\n openModal: boolean;\n}\n\nexport class PropertyQueryEditor extends PureComponent {\n state: State = {\n assets: [],\n loading: true,\n openModal: false,\n };\n\n async updateInfo() {\n const { query, datasource } = this.props;\n const update: State = {\n loading: false,\n } as State;\n\n const cache = datasource.getCache(query.region);\n if (query?.assetId) {\n try {\n update.asset = await cache.getAssetInfo(query.assetId);\n } catch (err) {\n console.warn('error reading asset info', err);\n update.property = undefined;\n }\n }\n update.property = getAssetProperty(update.asset, query.propertyId);\n\n try {\n update.assets = await cache.getAssetPickerOptions();\n } catch (err) {\n console.warn('error getting options', err);\n }\n this.setState(update);\n }\n\n async componentDidMount() {\n this.updateInfo();\n }\n\n async componentDidUpdate(oldProps: Props) {\n const { query } = this.props;\n const assetChanged = query?.assetId !== oldProps?.query?.assetId;\n const propChanged = query?.propertyId !== oldProps?.query?.propertyId;\n const regionChanged = query?.region !== oldProps?.query?.region;\n if (assetChanged || propChanged || regionChanged) {\n if (!query.assetId && !regionChanged) {\n this.setState({ asset: undefined, property: undefined, loading: false });\n } else {\n this.setState({ loading: true });\n this.updateInfo();\n }\n }\n }\n\n onAssetChange = (sel: SelectableValue) => {\n const { onChange, query, onRunQuery } = this.props;\n onChange({ ...query, assetId: sel.value! });\n onRunQuery();\n };\n\n onPropertyChange = (sel: SelectableValue) => {\n const { onChange, query, onRunQuery } = this.props;\n const update = { ...query, propertyId: sel.value! };\n // Make sure the selected aggregates are actually supported\n if (isAssetPropertyAggregatesQuery(update)) {\n if (update.propertyId) {\n const info = getAssetProperty(this.state.asset, update.propertyId);\n if (!update.aggregates) {\n update.aggregates = [];\n }\n if (info) {\n update.aggregates = update.aggregates.filter((a) => aggReg.get(a).isValid(info));\n }\n if (!update.aggregates.length) {\n update.aggregates = [getDefaultAggregate(info)];\n }\n }\n }\n onChange(update);\n onRunQuery();\n };\n\n onSetAssetId = (assetId?: string) => {\n const { onChange, query, onRunQuery } = this.props;\n onChange({ ...query, assetId });\n onRunQuery();\n };\n\n onSetPropertyId = (propertyId?: string) => {\n const { onChange, query, onRunQuery } = this.props;\n onChange({ ...query, propertyId });\n onRunQuery();\n };\n\n onSetHierarchyId = (hierarchyId?: string) => {\n const { onChange, query, onRunQuery } = this.props;\n onChange({ ...(query as any), hierarchyId });\n onRunQuery();\n };\n\n onHierarchyIdChange = (sel: SelectableValue) => {\n const { onChange, query, onRunQuery } = this.props;\n const update = { ...query };\n if (isListAssociatedAssetsQuery(update)) {\n if (sel.value && sel.value.length) {\n update.hierarchyId = sel.value;\n } else {\n delete update.hierarchyId;\n }\n }\n onChange(update);\n onRunQuery();\n };\n\n //--------------------------------------------------------------------------------\n //\n //--------------------------------------------------------------------------------\n\n onAggregateChange = (aggregates: AggregateType[]) => {\n const { onChange, query, onRunQuery } = this.props;\n onChange({ ...query, aggregates } as any);\n onRunQuery();\n };\n\n onResolutionChange = (sel: SelectableValue) => {\n const { onChange, query, onRunQuery } = this.props;\n onChange({ ...query, resolution: sel.value } as any);\n onRunQuery();\n };\n\n renderAggregateRow(query: AssetPropertyAggregatesQuery) {\n const { property } = this.state;\n return (\n
\n \n \n \n \n v.value === query.resolution) || resolutions[0]}\n onChange={this.onResolutionChange}\n menuPlacement=\"bottom\"\n />\n \n
\n );\n }\n\n renderAssociatedAsset(query: ListAssociatedAssetsQuery) {\n const { asset, loading } = this.state;\n const hierarchies: Array> = [{ value: '', label: '** Parent **' }];\n if (asset) {\n hierarchies.push(...asset.hierarchy);\n }\n\n let current = hierarchies.find((v) => v.value === query.hierarchyId);\n if (!current) {\n if (query.hierarchyId) {\n current = { value: query.hierarchyId, label: 'ID: ' + query.hierarchyId };\n hierarchies.push(current);\n } else {\n current = hierarchies[0]; // parent\n }\n }\n\n return (\n
\n \n `Hierarchy Id: ${txt}`}\n menuPlacement=\"bottom\"\n />\n \n
\n );\n }\n\n render() {\n const { query, datasource } = this.props;\n const { loading, asset, assets } = this.state;\n\n let current = query.assetId ? assets.find((v) => v.value === query.assetId) : undefined;\n if (!current && query.assetId) {\n if (loading) {\n current = { label: 'loading...', value: query.assetId };\n } else if (asset) {\n current = { label: asset.name, description: query.assetId, value: query.assetId };\n } else {\n current = { label: `ID: ${query.assetId}`, value: query.assetId };\n }\n }\n\n const isAssociatedAssets = isListAssociatedAssetsQuery(query);\n const showProp = !isAssociatedAssets && (query.propertyId || query.assetId);\n const properties = showProp ? (asset ? asset.properties : []) : [];\n const showQuality =\n (query.propertyId && isAssetPropertyAggregatesQuery(query)) || isAssetPropertyValueHistoryQuery(query);\n\n let currentProperty = properties.find((p) => p.Id === query.propertyId);\n if (!currentProperty && query.propertyId) {\n currentProperty = {\n value: query.propertyId,\n label: 'ID: ' + query.propertyId,\n } as AssetPropertyInfo;\n }\n\n return (\n <>\n
\n \n `Asset ID: ${txt}`}\n menuPlacement=\"bottom\"\n />\n \n \n
\n {showProp && (\n <>\n
\n \n `Property ID: ${txt}`}\n menuPlacement=\"bottom\"\n />\n \n
\n {showQuality && (\n <>\n {isAssetPropertyAggregatesQuery(query) && this.renderAggregateRow(query)}\n \n \n )}\n \n )}\n {isAssociatedAssets && this.renderAssociatedAsset(query as ListAssociatedAssetsQuery)}\n \n );\n }\n}\n","import defaults from 'lodash/defaults';\nimport React, { PureComponent } from 'react';\nimport { QueryEditorProps, SelectableValue } from '@grafana/data';\nimport { DataSource } from 'DataSource';\nimport { SitewiseQuery, SitewiseOptions, QueryType, ListAssetsQuery } from 'types';\nimport { Icon, InlineField, LinkButton, Select } from '@grafana/ui';\nimport { QueryTypeInfo, siteWisteQueryTypes, changeQueryType } from 'queryInfo';\nimport { standardRegionOptions } from 'regions';\nimport { ListAssetsQueryEditor } from './ListAssetsQueryEditor';\nimport { PropertyQueryEditor } from './PropertyQueryEditor';\n\ntype Props = QueryEditorProps;\n\nconst queryDefaults: Partial = {\n maxPageAggregations: 1,\n};\n\nexport const firstLabelWith = 14;\n\nexport class QueryEditor extends PureComponent {\n onQueryTypeChange = (sel: SelectableValue) => {\n const { onChange, query, onRunQuery } = this.props;\n onChange(changeQueryType(query, sel as QueryTypeInfo));\n onRunQuery();\n };\n\n onRegionChange = (sel: SelectableValue) => {\n const { onChange, query, onRunQuery } = this.props;\n onChange({ ...query, assetId: undefined, propertyId: undefined, region: sel.value });\n onRunQuery();\n };\n\n renderQuery(query: SitewiseQuery) {\n if (!query.queryType) {\n return;\n }\n switch (query.queryType) {\n case QueryType.ListAssetModels:\n return null; // nothing required\n case QueryType.ListAssets:\n return ;\n case QueryType.ListAssociatedAssets:\n case QueryType.PropertyValue:\n case QueryType.PropertyAggregate:\n case QueryType.PropertyValueHistory:\n return ;\n }\n return
Missing UI for query type: {query.queryType}
;\n }\n\n render() {\n const { datasource } = this.props;\n const query = defaults(this.props.query, queryDefaults);\n\n const defaultRegion: SelectableValue = {\n label: `Default`,\n desctiption: datasource.options?.defaultRegion,\n value: undefined,\n };\n const regions = query.region ? [defaultRegion, ...standardRegionOptions] : standardRegionOptions;\n const currentQueryType = siteWisteQueryTypes.find((v) => v.value === query.queryType);\n const queryTooltip = currentQueryType ? (\n
\n {currentQueryType.description}
\n \n API Docs \n \n
\n ) : undefined;\n\n return (\n <>\n
\n \n \n \n \n v.value === query.region) || defaultRegion}\n onChange={this.onRegionChange}\n backspaceRemovesValue={true}\n allowCustomValue={true}\n isClearable={true}\n menuPlacement=\"bottom\"\n />\n \n
\n {this.renderQuery(query)}\n \n );\n }\n}\n","import { DataSourcePlugin } from '@grafana/data';\nimport { DataSource } from './DataSource';\nimport { SitewiseQuery, SitewiseOptions } from './types';\nimport { MetaInspector } from 'components/MetaInspector';\nimport { ConfigEditor } from 'components/ConfigEditor';\nimport { QueryEditor } from 'components/query/QueryEditor';\n\nexport const plugin = new DataSourcePlugin(DataSource)\n .setConfigEditor(ConfigEditor)\n .setMetadataInspector(MetaInspector)\n .setQueryEditor(QueryEditor);\n"],"sourceRoot":""} \ No newline at end of file diff --git a/8.1.4/grafana-iot-sitewise-datasource/plugin.json b/8.1.4/grafana-iot-sitewise-datasource/plugin.json new file mode 100644 index 0000000..e9dd8f8 --- /dev/null +++ b/8.1.4/grafana-iot-sitewise-datasource/plugin.json @@ -0,0 +1,53 @@ +{ + "type": "datasource", + "name": "AWS IoT SiteWise", + "id": "grafana-iot-sitewise-datasource", + "category": "iot", + "backend": true, + "executable": "gpx_iot_sitewise", + "metrics": true, + "alerting": true, + "annotations": true, + "info": { + "description": "A managed service to collect, store, organize and monitor data from industrial equipment", + "author": { + "name": "Grafana Labs", + "url": "https://grafana.com" + }, + "keywords": [ + "datasource", + "iot", + "aws" + ], + "logos": { + "small": "img/sitewise.svg", + "large": "img/sitewise.svg" + }, + "links": [ + { + "name": "Website", + "url": "https://aws.amazon.com/iot-sitewise/" + }, + { + "name": "Issue Tracker", + "url": "https://github.com/grafana/iot-sitewise-datasource/issues" + } + ], + "screenshots": [], + "version": "1.2.4", + "updated": "2021-07-28", + "build": { + "time": 1627496227430, + "repo": "git@github.com:grafana/iot-sitewise-datasource.git", + "branch": "v1.2.x", + "hash": "6b104224f050b16061e9ae48d5ef6bbae955c8c1", + "pr": 103, + "number": 1851 + } + }, + "dependencies": { + "grafanaVersion": "7.5.0", + "grafanaDependency": ">=7.5.0", + "plugins": [] + } +} \ No newline at end of file