@neurosity/sdk 6.1.1 → 6.2.1-next.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/{cjs/Neurosity.d.ts → Neurosity.d.ts} +116 -2
- package/dist/{cjs/api → api}/bluetooth/BluetoothClient.d.ts +6 -6
- package/dist/{cjs/api → api}/bluetooth/constants.d.ts +0 -0
- package/dist/{cjs/api → api}/bluetooth/index.d.ts +1 -0
- package/dist/{esm/api → api}/bluetooth/react-native/ReactNativeTransport.d.ts +5 -4
- package/dist/{cjs/api → api}/bluetooth/types/index.d.ts +2 -2
- package/dist/{cjs/api → api}/bluetooth/utils/create6DigitPin.d.ts +0 -0
- package/dist/{cjs/api → api}/bluetooth/utils/csvBufferToEpoch.d.ts +0 -0
- package/dist/{cjs/api → api}/bluetooth/utils/encoding.d.ts +0 -0
- package/dist/{cjs/api → api}/bluetooth/utils/osHasBluetoothSupport.d.ts +0 -0
- package/dist/{cjs/api → api}/bluetooth/utils/stitch.d.ts +1 -1
- package/dist/{esm/api → api}/bluetooth/web/WebBluetoothTransport.d.ts +1 -1
- package/dist/{cjs/api → api}/bluetooth/web/isMaybeWebWorkerContext.d.ts +0 -0
- package/dist/{cjs/api → api}/bluetooth/web/isWebBluetoothSupported.d.ts +0 -0
- package/dist/{cjs/api → api}/firebase/FirebaseApp.d.ts +0 -0
- package/dist/{cjs/api → api}/firebase/FirebaseDevice.d.ts +1 -1
- package/dist/{cjs/api → api}/firebase/FirebaseUser.d.ts +0 -0
- package/dist/{cjs/api → api}/firebase/config.d.ts +0 -0
- package/dist/{cjs/api → api}/firebase/deviceStore.d.ts +0 -0
- package/dist/{cjs/api → api}/firebase/index.d.ts +0 -0
- package/dist/{cjs/api → api}/https/config.d.ts +0 -0
- package/dist/{cjs/api → api}/https/createOAuthURL.d.ts +0 -0
- package/dist/{cjs/api → api}/https/getOAuthToken.d.ts +0 -0
- package/dist/{cjs/api → api}/https/utils.d.ts +0 -0
- package/dist/{esm/api → api}/index.d.ts +8 -0
- package/dist/index.cjs +2 -0
- package/dist/index.cjs.map +1 -0
- package/dist/{cjs/index.d.ts → index.d.ts} +0 -0
- package/dist/index.m.js +2 -0
- package/dist/index.m.js.map +1 -0
- package/dist/index.umd.js +2 -0
- package/dist/index.umd.js.map +1 -0
- package/dist/{cjs/subscriptions → subscriptions}/SubscriptionManager.d.ts +0 -0
- package/dist/{cjs/timesync → timesync}/Timesync.d.ts +1 -1
- package/dist/{cjs/timesync → timesync}/index.d.ts +0 -0
- package/dist/{cjs/types → types}/status.d.ts +0 -0
- package/dist/{cjs/types → types}/streaming.d.ts +0 -0
- package/dist/{cjs/utils → utils}/errors.d.ts +0 -0
- package/dist/{cjs/utils → utils}/filterInternalKeys.d.ts +0 -0
- package/dist/{cjs/utils → utils}/hapticEffects.d.ts +0 -0
- package/dist/{cjs/utils → utils}/heartbeat.d.ts +0 -0
- package/dist/{cjs/utils → utils}/is-node.d.ts +0 -0
- package/dist/utils/metrics.d.ts +6 -0
- package/dist/{cjs/utils → utils}/oauth.d.ts +1 -1
- package/dist/{cjs/utils → utils}/pipes.d.ts +0 -0
- package/dist/{cjs/utils → utils}/platform.d.ts +0 -0
- package/dist/{cjs/utils → utils}/subscription.d.ts +0 -0
- package/dist/{cjs/utils → utils}/whileOnline.d.ts +1 -1
- package/package.json +15 -23
- package/CHANGELOG.md +0 -25
- package/dist/browser/neurosity.iife.js +0 -48711
- package/dist/browser/neurosity.js +0 -666
- package/dist/browser/neurosity.js.map +0 -1
- package/dist/cjs/Neurosity.js +0 -1244
- package/dist/cjs/api/bluetooth/BluetoothClient.js +0 -310
- package/dist/cjs/api/bluetooth/BluetoothTransport.d.ts +0 -33
- package/dist/cjs/api/bluetooth/BluetoothTransport.js +0 -2
- package/dist/cjs/api/bluetooth/constants.js +0 -9
- package/dist/cjs/api/bluetooth/index.js +0 -20
- package/dist/cjs/api/bluetooth/react-native/ReactNativeTransport.d.ts +0 -69
- package/dist/cjs/api/bluetooth/react-native/ReactNativeTransport.js +0 -405
- package/dist/cjs/api/bluetooth/react-native/types/BleManagerTypes.d.ts +0 -63
- package/dist/cjs/api/bluetooth/react-native/types/BleManagerTypes.js +0 -11
- package/dist/cjs/api/bluetooth/react-native/types/ReactNativeTypes.d.ts +0 -180
- package/dist/cjs/api/bluetooth/react-native/types/ReactNativeTypes.js +0 -10
- package/dist/cjs/api/bluetooth/types/index.js +0 -22
- package/dist/cjs/api/bluetooth/utils/create6DigitPin.js +0 -8
- package/dist/cjs/api/bluetooth/utils/csvBufferToEpoch.js +0 -36
- package/dist/cjs/api/bluetooth/utils/encoding.js +0 -22
- package/dist/cjs/api/bluetooth/utils/osHasBluetoothSupport.js +0 -23
- package/dist/cjs/api/bluetooth/utils/stitch.js +0 -22
- package/dist/cjs/api/bluetooth/web/WebBluetoothTransport.d.ts +0 -54
- package/dist/cjs/api/bluetooth/web/WebBluetoothTransport.js +0 -430
- package/dist/cjs/api/bluetooth/web/isMaybeWebWorkerContext.js +0 -8
- package/dist/cjs/api/bluetooth/web/isWebBluetoothSupported.js +0 -11
- package/dist/cjs/api/firebase/FirebaseApp.js +0 -70
- package/dist/cjs/api/firebase/FirebaseDevice.js +0 -146
- package/dist/cjs/api/firebase/FirebaseUser.js +0 -434
- package/dist/cjs/api/firebase/config.js +0 -11
- package/dist/cjs/api/firebase/deviceStore.js +0 -191
- package/dist/cjs/api/firebase/index.js +0 -19
- package/dist/cjs/api/https/config.js +0 -4
- package/dist/cjs/api/https/createOAuthURL.js +0 -18
- package/dist/cjs/api/https/getOAuthToken.js +0 -34
- package/dist/cjs/api/https/utils.js +0 -13
- package/dist/cjs/api/index.d.ts +0 -109
- package/dist/cjs/api/index.js +0 -307
- package/dist/cjs/index.js +0 -18
- package/dist/cjs/subscriptions/SubscriptionManager.js +0 -27
- package/dist/cjs/timesync/Timesync.js +0 -78
- package/dist/cjs/timesync/index.js +0 -17
- package/dist/cjs/types/accelerometer.d.ts +0 -10
- package/dist/cjs/types/accelerometer.js +0 -2
- package/dist/cjs/types/actions.d.ts +0 -16
- package/dist/cjs/types/actions.js +0 -2
- package/dist/cjs/types/awareness.d.ts +0 -1
- package/dist/cjs/types/awareness.js +0 -2
- package/dist/cjs/types/brainwaves.d.ts +0 -26
- package/dist/cjs/types/brainwaves.js +0 -2
- package/dist/cjs/types/calm.d.ts +0 -6
- package/dist/cjs/types/calm.js +0 -2
- package/dist/cjs/types/client.d.ts +0 -22
- package/dist/cjs/types/client.js +0 -2
- package/dist/cjs/types/credentials.d.ts +0 -12
- package/dist/cjs/types/credentials.js +0 -2
- package/dist/cjs/types/deviceInfo.d.ts +0 -18
- package/dist/cjs/types/deviceInfo.js +0 -2
- package/dist/cjs/types/epoch.d.ts +0 -12
- package/dist/cjs/types/epoch.js +0 -2
- package/dist/cjs/types/experiment.d.ts +0 -9
- package/dist/cjs/types/experiment.js +0 -2
- package/dist/cjs/types/focus.d.ts +0 -6
- package/dist/cjs/types/focus.js +0 -2
- package/dist/cjs/types/hapticEffects.d.ts +0 -125
- package/dist/cjs/types/hapticEffects.js +0 -2
- package/dist/cjs/types/kinesis.d.ts +0 -6
- package/dist/cjs/types/kinesis.js +0 -2
- package/dist/cjs/types/marker.d.ts +0 -7
- package/dist/cjs/types/marker.js +0 -2
- package/dist/cjs/types/metrics.d.ts +0 -21
- package/dist/cjs/types/metrics.js +0 -2
- package/dist/cjs/types/oauth.d.ts +0 -20
- package/dist/cjs/types/oauth.js +0 -2
- package/dist/cjs/types/options.d.ts +0 -51
- package/dist/cjs/types/options.js +0 -2
- package/dist/cjs/types/sample.d.ts +0 -15
- package/dist/cjs/types/sample.js +0 -2
- package/dist/cjs/types/settings.d.ts +0 -13
- package/dist/cjs/types/settings.js +0 -2
- package/dist/cjs/types/signalQuality.d.ts +0 -13
- package/dist/cjs/types/signalQuality.js +0 -2
- package/dist/cjs/types/skill.d.ts +0 -68
- package/dist/cjs/types/skill.js +0 -2
- package/dist/cjs/types/status.js +0 -22
- package/dist/cjs/types/streaming.js +0 -20
- package/dist/cjs/types/subscriptions.d.ts +0 -23
- package/dist/cjs/types/subscriptions.js +0 -2
- package/dist/cjs/types/training.d.ts +0 -19
- package/dist/cjs/types/training.js +0 -2
- package/dist/cjs/types/user.d.ts +0 -12
- package/dist/cjs/types/user.js +0 -2
- package/dist/cjs/utils/errors.js +0 -17
- package/dist/cjs/utils/filterInternalKeys.js +0 -21
- package/dist/cjs/utils/hapticEffects.js +0 -130
- package/dist/cjs/utils/heartbeat.js +0 -41
- package/dist/cjs/utils/is-node.js +0 -9
- package/dist/cjs/utils/metrics.d.ts +0 -1
- package/dist/cjs/utils/metrics.js +0 -56
- package/dist/cjs/utils/oauth.js +0 -92
- package/dist/cjs/utils/pick.d.ts +0 -1
- package/dist/cjs/utils/pick.js +0 -5
- package/dist/cjs/utils/pipes.js +0 -71
- package/dist/cjs/utils/platform.js +0 -47
- package/dist/cjs/utils/subscription.js +0 -55
- package/dist/cjs/utils/transferDevice.d.ts +0 -9
- package/dist/cjs/utils/transferDevice.js +0 -2
- package/dist/cjs/utils/whileOnline.js +0 -15
- package/dist/electron/index.js +0 -86
- package/dist/electron/index.js.map +0 -1
- package/dist/esm/Neurosity.d.ts +0 -619
- package/dist/esm/Neurosity.js +0 -1213
- package/dist/esm/api/bluetooth/BluetoothClient.d.ts +0 -72
- package/dist/esm/api/bluetooth/BluetoothClient.js +0 -306
- package/dist/esm/api/bluetooth/BluetoothTransport.d.ts +0 -33
- package/dist/esm/api/bluetooth/BluetoothTransport.js +0 -1
- package/dist/esm/api/bluetooth/constants.d.ts +0 -4
- package/dist/esm/api/bluetooth/constants.js +0 -6
- package/dist/esm/api/bluetooth/index.d.ts +0 -4
- package/dist/esm/api/bluetooth/index.js +0 -4
- package/dist/esm/api/bluetooth/react-native/ReactNativeTransport.js +0 -401
- package/dist/esm/api/bluetooth/react-native/types/BleManagerTypes.d.ts +0 -63
- package/dist/esm/api/bluetooth/react-native/types/BleManagerTypes.js +0 -8
- package/dist/esm/api/bluetooth/react-native/types/ReactNativeTypes.d.ts +0 -180
- package/dist/esm/api/bluetooth/react-native/types/ReactNativeTypes.js +0 -9
- package/dist/esm/api/bluetooth/types/index.d.ts +0 -31
- package/dist/esm/api/bluetooth/types/index.js +0 -19
- package/dist/esm/api/bluetooth/utils/create6DigitPin.d.ts +0 -1
- package/dist/esm/api/bluetooth/utils/create6DigitPin.js +0 -4
- package/dist/esm/api/bluetooth/utils/csvBufferToEpoch.d.ts +0 -11
- package/dist/esm/api/bluetooth/utils/csvBufferToEpoch.js +0 -31
- package/dist/esm/api/bluetooth/utils/encoding.d.ts +0 -3
- package/dist/esm/api/bluetooth/utils/encoding.js +0 -17
- package/dist/esm/api/bluetooth/utils/osHasBluetoothSupport.d.ts +0 -2
- package/dist/esm/api/bluetooth/utils/osHasBluetoothSupport.js +0 -16
- package/dist/esm/api/bluetooth/utils/stitch.d.ts +0 -5
- package/dist/esm/api/bluetooth/utils/stitch.js +0 -18
- package/dist/esm/api/bluetooth/web/WebBluetoothTransport.js +0 -426
- package/dist/esm/api/bluetooth/web/isMaybeWebWorkerContext.d.ts +0 -1
- package/dist/esm/api/bluetooth/web/isMaybeWebWorkerContext.js +0 -4
- package/dist/esm/api/bluetooth/web/isWebBluetoothSupported.d.ts +0 -1
- package/dist/esm/api/bluetooth/web/isWebBluetoothSupported.js +0 -7
- package/dist/esm/api/firebase/FirebaseApp.d.ts +0 -20
- package/dist/esm/api/firebase/FirebaseApp.js +0 -63
- package/dist/esm/api/firebase/FirebaseDevice.d.ts +0 -68
- package/dist/esm/api/firebase/FirebaseDevice.js +0 -139
- package/dist/esm/api/firebase/FirebaseUser.d.ts +0 -53
- package/dist/esm/api/firebase/FirebaseUser.js +0 -426
- package/dist/esm/api/firebase/config.d.ts +0 -8
- package/dist/esm/api/firebase/config.js +0 -8
- package/dist/esm/api/firebase/deviceStore.d.ts +0 -26
- package/dist/esm/api/firebase/deviceStore.js +0 -184
- package/dist/esm/api/firebase/index.d.ts +0 -3
- package/dist/esm/api/firebase/index.js +0 -3
- package/dist/esm/api/https/config.d.ts +0 -1
- package/dist/esm/api/https/config.js +0 -1
- package/dist/esm/api/https/createOAuthURL.d.ts +0 -3
- package/dist/esm/api/https/createOAuthURL.js +0 -11
- package/dist/esm/api/https/getOAuthToken.d.ts +0 -3
- package/dist/esm/api/https/getOAuthToken.js +0 -27
- package/dist/esm/api/https/utils.d.ts +0 -2
- package/dist/esm/api/https/utils.js +0 -9
- package/dist/esm/api/index.js +0 -300
- package/dist/esm/index.d.ts +0 -2
- package/dist/esm/index.js +0 -2
- package/dist/esm/neurosity.mjs +0 -48699
- package/dist/esm/subscriptions/SubscriptionManager.d.ts +0 -11
- package/dist/esm/subscriptions/SubscriptionManager.js +0 -23
- package/dist/esm/timesync/Timesync.d.ts +0 -20
- package/dist/esm/timesync/Timesync.js +0 -71
- package/dist/esm/timesync/index.d.ts +0 -1
- package/dist/esm/timesync/index.js +0 -1
- package/dist/esm/types/accelerometer.d.ts +0 -10
- package/dist/esm/types/accelerometer.js +0 -1
- package/dist/esm/types/actions.d.ts +0 -16
- package/dist/esm/types/actions.js +0 -1
- package/dist/esm/types/awareness.d.ts +0 -1
- package/dist/esm/types/awareness.js +0 -1
- package/dist/esm/types/brainwaves.d.ts +0 -26
- package/dist/esm/types/brainwaves.js +0 -1
- package/dist/esm/types/calm.d.ts +0 -6
- package/dist/esm/types/calm.js +0 -1
- package/dist/esm/types/client.d.ts +0 -22
- package/dist/esm/types/client.js +0 -1
- package/dist/esm/types/credentials.d.ts +0 -12
- package/dist/esm/types/credentials.js +0 -1
- package/dist/esm/types/deviceInfo.d.ts +0 -18
- package/dist/esm/types/deviceInfo.js +0 -1
- package/dist/esm/types/epoch.d.ts +0 -12
- package/dist/esm/types/epoch.js +0 -1
- package/dist/esm/types/experiment.d.ts +0 -9
- package/dist/esm/types/experiment.js +0 -1
- package/dist/esm/types/focus.d.ts +0 -6
- package/dist/esm/types/focus.js +0 -1
- package/dist/esm/types/hapticEffects.d.ts +0 -125
- package/dist/esm/types/hapticEffects.js +0 -1
- package/dist/esm/types/kinesis.d.ts +0 -6
- package/dist/esm/types/kinesis.js +0 -1
- package/dist/esm/types/marker.d.ts +0 -7
- package/dist/esm/types/marker.js +0 -1
- package/dist/esm/types/metrics.d.ts +0 -21
- package/dist/esm/types/metrics.js +0 -1
- package/dist/esm/types/oauth.d.ts +0 -20
- package/dist/esm/types/oauth.js +0 -1
- package/dist/esm/types/options.d.ts +0 -51
- package/dist/esm/types/options.js +0 -1
- package/dist/esm/types/sample.d.ts +0 -15
- package/dist/esm/types/sample.js +0 -1
- package/dist/esm/types/settings.d.ts +0 -13
- package/dist/esm/types/settings.js +0 -1
- package/dist/esm/types/signalQuality.d.ts +0 -13
- package/dist/esm/types/signalQuality.js +0 -1
- package/dist/esm/types/skill.d.ts +0 -68
- package/dist/esm/types/skill.js +0 -1
- package/dist/esm/types/status.d.ts +0 -26
- package/dist/esm/types/status.js +0 -19
- package/dist/esm/types/streaming.d.ts +0 -15
- package/dist/esm/types/streaming.js +0 -17
- package/dist/esm/types/subscriptions.d.ts +0 -23
- package/dist/esm/types/subscriptions.js +0 -1
- package/dist/esm/types/training.d.ts +0 -19
- package/dist/esm/types/training.js +0 -1
- package/dist/esm/types/user.d.ts +0 -12
- package/dist/esm/types/user.js +0 -1
- package/dist/esm/utils/errors.d.ts +0 -5
- package/dist/esm/utils/errors.js +0 -11
- package/dist/esm/utils/filterInternalKeys.d.ts +0 -3
- package/dist/esm/utils/filterInternalKeys.js +0 -17
- package/dist/esm/utils/hapticEffects.d.ts +0 -123
- package/dist/esm/utils/hapticEffects.js +0 -125
- package/dist/esm/utils/heartbeat.d.ts +0 -4
- package/dist/esm/utils/heartbeat.js +0 -33
- package/dist/esm/utils/is-node.d.ts +0 -1
- package/dist/esm/utils/is-node.js +0 -5
- package/dist/esm/utils/metrics.d.ts +0 -1
- package/dist/esm/utils/metrics.js +0 -52
- package/dist/esm/utils/oauth.d.ts +0 -9
- package/dist/esm/utils/oauth.js +0 -64
- package/dist/esm/utils/pick.d.ts +0 -1
- package/dist/esm/utils/pick.js +0 -1
- package/dist/esm/utils/pipes.d.ts +0 -46
- package/dist/esm/utils/pipes.js +0 -65
- package/dist/esm/utils/platform.d.ts +0 -30
- package/dist/esm/utils/platform.js +0 -41
- package/dist/esm/utils/subscription.d.ts +0 -6
- package/dist/esm/utils/subscription.js +0 -24
- package/dist/esm/utils/transferDevice.d.ts +0 -9
- package/dist/esm/utils/transferDevice.js +0 -1
- package/dist/esm/utils/whileOnline.d.ts +0 -8
- package/dist/esm/utils/whileOnline.js +0 -11
- package/dist/examples/auth.html +0 -32
- package/dist/examples/cloud.html +0 -17
- package/dist/examples/index.html +0 -1
- package/dist/examples/neurosity.iife.js +0 -48711
- package/dist/examples/neurosity.js +0 -666
- package/dist/examples/neurosity.mjs +0 -48699
- package/dist/examples/training.html +0 -49
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
!function(e,t){"object"==typeof exports&&"undefined"!=typeof module?t(exports,require("rxjs"),require("rxjs/operators"),require("fast-deep-equal"),require("firebase/app"),require("firebase/database"),require("firebase/auth"),require("firebase/functions"),require("firebase/firestore"),require("outliers"),require("@neurosity/ipk"),require("axios"),require("semver/functions/gte")):"function"==typeof define&&define.amd?define(["exports","rxjs","rxjs/operators","fast-deep-equal","firebase/app","firebase/database","firebase/auth","firebase/functions","firebase/firestore","outliers","@neurosity/ipk","axios","semver/functions/gte"],t):t((e||self).sdk={},e.rxjs,e.operators,e.fastDeepEqual,e.firebase,0,0,0,0,e.outliers,e.ipk,e.axios,e.semverGte)}(this,function(e,t,n,r,i,o,s,c,a,u,l,h,d){function f(e){return e&&"object"==typeof e&&"default"in e?e:{default:e}}var m=/*#__PURE__*/f(r),p=/*#__PURE__*/f(i),v=/*#__PURE__*/f(u),g=/*#__PURE__*/f(h),_=/*#__PURE__*/f(d);function b(e,t){for(var n=0;n<t.length;n++){var r=t[n];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(e,"symbol"==typeof(i=function(e,t){if("object"!=typeof e||null===e)return e;var n=e[Symbol.toPrimitive];if(void 0!==n){var r=n.call(e,"string");if("object"!=typeof r)return r;throw new TypeError("@@toPrimitive must return a primitive value.")}return String(e)}(r.key))?i:String(i),r)}var i}function C(e,t,n){return t&&b(e.prototype,t),n&&b(e,n),Object.defineProperty(e,"prototype",{writable:!1}),e}function P(){return P=Object.assign?Object.assign.bind():function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var r in n)Object.prototype.hasOwnProperty.call(n,r)&&(e[r]=n[r])}return e},P.apply(this,arguments)}function S(e,t){return S=Object.setPrototypeOf?Object.setPrototypeOf.bind():function(e,t){return e.__proto__=t,e},S(e,t)}function w(){if("undefined"==typeof Reflect||!Reflect.construct)return!1;if(Reflect.construct.sham)return!1;if("function"==typeof Proxy)return!0;try{return Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],function(){})),!0}catch(e){return!1}}function D(e,t,n){return D=w()?Reflect.construct.bind():function(e,t,n){var r=[null];r.push.apply(r,t);var i=new(Function.bind.apply(e,r));return n&&S(i,n.prototype),i},D.apply(null,arguments)}var T={apiKey:"AIzaSyB0TkZ83Fj0CIzn8AAmE-Osc92s3ER8hy8",authDomain:"neurosity-device.firebaseapp.com",databaseURL:"https://neurosity-device.firebaseio.com",projectId:"neurosity-device",storageBucket:"neurosity-device.appspot.com",messagingSenderId:"212595049674"},y=p.default.database.ServerValue.TIMESTAMP,E=/*#__PURE__*/function(){function e(e){this.standalone=void 0,this.app=void 0,this.app=this.getApp(e.deviceId),this.standalone=this.app.name===e.deviceId,e.emulator&&this.connectEmulators(e)}var t=e.prototype;return t.getApp=function(e){var t=p.default.apps,n="undefined"!=typeof window&&"firebase"in window&&"apps"in window.firebase?window.firebase.apps:[],r=[].concat(t,n).find(function(e){return"[DEFAULT]"===e.name&&e.options.databaseURL===T.databaseURL});if(r)return r;if(e){var i=e;return t.find(function(e){return e.name===i})||p.default.initializeApp(T,i)}return p.default.initializeApp(T)},t.connectEmulators=function(e){var t=e.emulatorHost,n=e.emulatorAuthPort,r=e.emulatorDatabasePort,i=e.emulatorFunctionsPort,o=e.emulatorFirestorePort,s=e.emulatorOptions;this.app.auth().useEmulator("http://"+t+":"+n),this.app.database().useEmulator(t,r,s),this.app.functions().useEmulator(t,i),this.app.firestore().useEmulator(t,o,s)},t.goOnline=function(){this.app.database().goOnline()},t.goOffline=function(){this.app.database().goOffline()},t.disconnect=function(){return this.standalone?this.app.delete():Promise.resolve()},e}(),O=p.default.database.ServerValue.TIMESTAMP,N=p.default.auth.EmailAuthProvider.credentialWithLink,A=/*#__PURE__*/function(){function e(e){var t=this;this.app=void 0,this.user=void 0,this.app=e.app,this.app.auth().onAuthStateChanged(function(e){t.user=e})}var r=e.prototype;return r.auth=function(){return this.app.auth()},r.createAccount=function(e){try{var t=e.email,n=e.password;return Promise.resolve(this.app.auth().createUserWithEmailAndPassword(t,n).then(function(e){return[null,e]}).catch(function(e){return[e,null]})).then(function(e){var t=e[0],n=e[1];return t?Promise.reject(t):n})}catch(e){return Promise.reject(e)}},r.deleteAccount=function(){try{var e=this,t=e.app.auth().currentUser;return t?Promise.resolve(e.getDevices().then(function(e){return[null,e]}).catch(function(e){return[e,null]})).then(function(n){var r,i=n[0],o=n[1];function s(e){return r?e:t.delete()}if(i)return Promise.reject(i);var c=function(){if(o.length)return Promise.resolve(Promise.all(o.map(function(t){return e.removeDevice(t.deviceId)})).then(function(){return null}).catch(function(e){return e})).then(function(e){if(e){var t=Promise.reject(e);return r=1,t}})}();return c&&c.then?c.then(s):s(c)}):Promise.reject(new Error("You are trying to delete an account that is not authenticated. To delete an account, the account must have signed in recently."))}catch(e){return Promise.reject(e)}},r.onAuthStateChanged=function(){var e=this;return new t.Observable(function(t){try{e.app.auth().onAuthStateChanged(function(e){t.next(e)},function(e){t.error(e)})}catch(e){t.error(e)}})},r.onLogin=function(){var e=this;return new t.Observable(function(t){var n=e.app.auth().onAuthStateChanged(function(e){e&&(t.next(e),t.complete())});return function(){return n()}})},r.login=function(e){if("customToken"in e){var t=e.customToken;return this.app.auth().signInWithCustomToken(t)}if("idToken"in e&&"providerId"in e){var n=new p.default.auth.OAuthProvider(e.providerId).credential(e.idToken);return this.app.auth().signInWithCredential(n)}if("email"in e&&"password"in e){var r=e.email,i=e.password;return this.app.auth().signInWithEmailAndPassword(r,i)}throw new Error("Either {email,password}, {customToken}, or {idToken,providerId} is required")},r.logout=function(){return this.app.auth().signOut()},r.createCustomToken=function(){try{return Promise.resolve(this.app.functions().httpsCallable("createCustomToken")().then(function(e){return[null,e.data]}).catch(function(e){return[e,null]})).then(function(e){var t=e[0],n=e[1];return t?Promise.reject(t):n})}catch(e){return Promise.reject(e)}},r.removeOAuthAccess=function(){try{var e,t=this;return(null==(e=t.user)?void 0:e.uid)?Promise.resolve(t.app.functions().httpsCallable("removeAccessOAuthApp")().then(function(e){return[null,e.data]}).catch(function(e){return[e,null]})).then(function(e){var n=e[0],r=e[1];return n?Promise.reject(n):Promise.resolve(t.logout().then(function(){return!1}).catch(function(e){return e})).then(function(e){return e?Promise.reject(e):r})}):Promise.reject("OAuth access can only be removed while logged in via OAuth.")}catch(e){return Promise.reject(e)}},r.getDevices=function(){try{var e,t=this;return(null==(e=t.user)?void 0:e.uid)?Promise.resolve(t.app.database().ref(t.getUserDevicesPath()).once("value")).then(function(e){var n=e.val();return t.userDevicesToDeviceInfoList(n)}):Promise.reject("Please login.")}catch(e){return Promise.reject(e)}},r.addDevice=function(e){try{var t,n=this,r=null==(t=n.user)?void 0:t.uid;return r?Promise.resolve(n.getDevices().catch(function(e){console.log(e)})).then(function(t){return t&&t.length&&t.map(function(e){return e.deviceId}).includes(e)?Promise.reject("The device is already added to this account."):Promise.resolve(n.isDeviceIdValid(e).then(function(e){return[e]}).catch(function(e){return[!1,e]})).then(function(t){var i;if(!t[0])return Promise.reject(t[1]);var o=n.getDeviceClaimedByPath(e),s=n.getUserClaimedDevicePath(e);return Promise.resolve(n.app.database().ref().update((i={},i[o]=r,i[s]={claimedOn:O},i)).then(function(){return[!1]}).catch(function(e){return[!0,e]})).then(function(e){if(e[0])return Promise.reject(e[1])})})}):Promise.reject("Please login.")}catch(e){return Promise.reject(e)}},r.removeDevice=function(e){try{var t,n=this;if(!(null==(t=n.user)?void 0:t.uid))return Promise.reject("Please login.");var r=n.getDeviceClaimedByPath(e),i=n.getUserClaimedDevicePath(e),o=n.app.database().ref(r),s=n.app.database().ref(i);return Promise.resolve(Promise.all([o.remove(),s.remove()]).then(function(){return[!1]}).catch(function(e){return[!0,e]})).then(function(e){if(e[0])return Promise.reject(e[1])})}catch(e){return Promise.reject(e)}},r.transferDevice=function(e){try{var t;return(null==(t=this.user)?void 0:t.uid)?"recipientsEmail"in e||"recipientsUserId"in e?null!=e&&e.deviceId?Promise.resolve(this.app.functions().httpsCallable("transferDeviceOwnership")(e).then(function(e){return[null,e.data]}).catch(function(e){return[e,null]})).then(function(e){var t=e[0];if(t)return Promise.reject(t)}):Promise.reject(new Error("transferDevice: a deviceId is required.")):Promise.reject(new Error("transferDevice: either 'recipientsEmail' or 'recipientsUserId' key is required.")):Promise.reject(new Error("transferDevice: auth is required."))}catch(e){return Promise.reject(e)}},r.isDeviceIdValid=function(e){try{if(!e||32!==e.length||!/[0-9A-Fa-f]{32}/g.test(e))return Promise.reject("The device id is incorrectly formatted.");var t=this.getDeviceClaimedByPath(e),n=this.app.database().ref(t);return Promise.resolve(n.once("value").catch(function(){return null})).then(function(e){return!(!e||e.exists())||Promise.reject("The device has already been claimed.")})}catch(e){return Promise.reject(e)}},r.onUserDevicesChange=function(){var e=this;return this.onAuthStateChanged().pipe(n.switchMap(function(r){if(!r)return t.EMPTY;var i=e.getUserDevicesPath(),o=e.app.database().ref(i);return t.fromEventPattern(function(e){return o.on("value",e)},function(e){return o.off("value",e)}).pipe(n.map(function(e){return e[0].val()}),n.switchMap(function(n){return t.from(e.userDevicesToDeviceInfoList(n))}))}))},r.onUserClaimsChange=function(){var e=this;return this.onAuthStateChanged().pipe(n.switchMap(function(r){if(!r)return t.EMPTY;var i=e.getUserClaimsUpdatedOnPath(),o=e.app.database().ref(i);return t.fromEventPattern(function(e){return o.on("value",e)},function(e){return o.off("value",e)}).pipe(n.map(function(e){return e[0].val()}),n.switchMap(function(){return t.from(e.getIdToken(!0)).pipe(n.switchMap(function(){return t.from(e.getClaims())}))}))}))},r.getIdToken=function(e){void 0===e&&(e=!1);try{var t,n=null==(t=this.app.auth())?void 0:t.currentUser;return n?Promise.resolve(n.getIdToken(e).catch(function(e){console.error(e)})).then(function(){}):Promise.reject("getUserIdToken: unable to get currentUser")}catch(e){return Promise.reject(e)}},r.getClaims=function(){var e,t=null==(e=this.app.auth())?void 0:e.currentUser;return t?t.getIdTokenResult().then(function(e){return e.claims}).catch(function(e){return console.error(e),null}):Promise.reject("getUserClaims: unable to get currentUser")},r.userDevicesToDeviceInfoList=function(e){try{var t=this,n=Object.keys(null!=e?e:{}).map(function(e){return t.app.database().ref(t.getDeviceInfoPath(e)).once("value")});return Promise.resolve(Promise.all(n).then(function(e){return e.map(function(e){return e.val()})})).then(function(t){var n=t.filter(function(e){return!!e});return n.sort(function(t,n){return e[t.deviceId].claimedOn-e[n.deviceId].claimedOn}),n})}catch(e){return Promise.reject(e)}},r.hasDevicePermission=function(e){try{var t=this.getDeviceInfoPath(e);return Promise.resolve(this.app.database().ref(t).once("value").then(function(){return!0}).catch(function(){return!1}))}catch(e){return Promise.reject(e)}},r.getDeviceClaimedByPath=function(e){return"devices/"+e+"/status/claimedBy"},r.getUserClaimedDevicePath=function(e){return"users/"+this.user.uid+"/devices/"+e},r.getUserDevicesPath=function(){return"users/"+this.user.uid+"/devices"},r.getUserClaimsUpdatedOnPath=function(){return"users/"+this.user.uid+"/claimsUpdatedOn"},r.getDeviceInfoPath=function(e){return"devices/"+e+"/info"},r.onUserExperiments=function(){var e=this;return this.onAuthStateChanged().pipe(n.switchMap(function(r){if(!r)return t.EMPTY;var i=e.user.uid,o=e.app.database().ref("experiments").orderByChild("userId").equalTo(i).limitToFirst(100);return t.fromEventPattern(function(e){return o.on("value",e)},function(e){return o.off("value",e)}).pipe(n.map(function(e){return e[0].val()}),n.map(function(e){return Object.entries(null!=e?e:{}).map(function(e){var t,n=e[1];return P({id:null!=(t=null==n?void 0:n.id)?t:e[0]},n)}).sort(function(e,t){return new Date(null==t?void 0:t.timestamp).getTime()-new Date(null==e?void 0:e.timestamp).getTime()})}))}))},r.deleteUserExperiment=function(e){try{var t=this;return e?Promise.resolve(Promise.all([function(e){return t.app.database().ref("experiments").child(e).remove()}(e),function(e){return t.app.functions().httpsCallable("removeRelations")({experimentId:e})}(e)]).catch(function(){})).then(function(){}):Promise.reject("deleteUserExperiment: please provide an experiment id")}catch(e){return Promise.reject(e)}},e}(),M=p.default.database.ServerValue.TIMESTAMP,I=p.default.database.ServerValue.TIMESTAMP,U=/*#__PURE__*/function(){function e(e){var t=e.deviceId,n=e.firebaseApp,r=e.dependencies;if(this.app=void 0,this.deviceStore=void 0,this.deviceId=void 0,!t)throw new Error("No Device ID provided.");this.deviceId=t,this.app=n.app,this.deviceStore=function(e,t,n){var r=e.database().ref("devices/"+t),i=r.child("subscriptions").push().key,o=r.child("clients/"+i),s=[],c=function(e,t){return r.child(e).set(t)},a=function(e,t){return r.child(e).update(t)},u=function(e,t,n){void 0===e&&(e="value");var i=r.child(t).on(e,function(e){n(e.val(),e)});return s.push(function(){r.child(t).off(e,i)}),i},l=function(e,t,n){n?r.child(e).off(t,n):r.child(e).off(t)},h=e.database().ref(".info/connected").on("value",function(e){e.val()&&o.onDisconnect().remove().then(function(){o.set(M),a("subscriptions",n.get()).then(function(){n.toList().forEach(function(e){r.child("subscriptions/"+e.id).onDisconnect().remove()})})})});return s.push(function(){e.database().ref(".info/connected").off("value",h)}),{set:c,once:function(e,t){void 0===t&&(t="value");try{return Promise.resolve(r.child(e).once(t)).then(function(e){return e.val()})}catch(e){return Promise.reject(e)}},update:a,lastOfChildValue:function(e,t,n){try{return Promise.resolve(r.child(e).orderByChild(t).equalTo(n).limitToLast(1).once("value")).then(function(e){var t=e.val();return Object.values(t||{})[0]||null})}catch(e){return Promise.reject(e)}},onNamespace:function(e,t){return u("value",e,function(e){t(e)})},offNamespace:function(e,t){l(e,"value",t)},dispatchAction:function(e){try{return Promise.resolve((t=e,r.child("actions").push(t))).then(function(t){var n=t.key,r="actions/"+n;if(t.onDisconnect().remove(),e.responseRequired){var i=e.responseTimeout||6e5,o=new Promise(function(e,n){var r=setTimeout(function(){clearTimeout(r),t.remove(),n("Action response timed out in "+i+"ms.")},i)}),s=new Promise(function(e){var t,n;n=e,u("value",t=r+"/response",function(e){null!==e&&(l(t,"value"),n(e))})});return Promise.race([s,o])}return n})}catch(e){return Promise.reject(e)}var t},nextMetric:function(e,t){try{return c("metrics/"+e,t),Promise.resolve()}catch(e){return Promise.reject(e)}},onMetric:function(e,t){var n=e.metric;return u("value",e.atomic?"metrics/"+n:"metrics/"+n+"/"+e.labels[0],function(e){null!==e&&t(e)})},subscribeToMetric:function(e){var t=r.child("subscriptions").push().key,n="subscriptions/"+t,o=P({id:t,clientId:i},e);return c(n,o),r.child(n).onDisconnect().remove(),o},unsubscribeFromMetric:function(e){r.child("subscriptions/"+e.id).remove()},removeMetricListener:function(e,t){var n=e.metric;l(e.atomic?"metrics/"+n:"metrics/"+n+"/"+e.labels[0],"value",t)},disconnect:function(){o.remove(),s.forEach(function(e){e()}),n.toList().filter(function(e){return e.clientId===i}).forEach(function(e){r.child("subscriptions/"+e.id).remove()})}}}(this.app,t,r.subscriptionManager)}var t=e.prototype;return t.dispatchAction=function(e){return this.deviceStore.dispatchAction(e)},t.getInfo=function(){try{return Promise.resolve(this.deviceStore.once("info"))}catch(e){return Promise.reject(e)}},t.onNamespace=function(e,t){return this.deviceStore.onNamespace(e,t)},t.onceNamespace=function(e){try{return Promise.resolve(this.deviceStore.once(e))}catch(e){return Promise.reject(e)}},t.offNamespace=function(e,t){this.deviceStore.offNamespace(e,t)},t.getTimesync=function(){try{return Promise.resolve(this.dispatchAction({command:"timesync",action:"get",responseRequired:!0,responseTimeout:250})).then(function(e){return e.timestamp})}catch(e){return Promise.reject(e)}},t.nextMetric=function(e,t){this.deviceStore.nextMetric(e,t)},t.onMetric=function(e,t){return this.deviceStore.onMetric(e,t)},t.subscribeToMetric=function(t){return this.deviceStore.subscribeToMetric(P({},t,{serverType:e.serverType}))},t.unsubscribeFromMetric=function(e){this.deviceStore.unsubscribeFromMetric(e)},t.removeMetricListener=function(e,t){this.deviceStore.removeMetricListener(e,t)},t.changeSettings=function(e){try{return Promise.resolve(this.deviceStore.update("settings",e))}catch(e){return Promise.reject(e)}},t.getSkill=function(e){try{return Promise.resolve(this.deviceStore.lastOfChildValue("skills","bundleId",e))}catch(e){return Promise.reject(e)}},t.createBluetoothToken=function(){try{return Promise.resolve(this.app.functions().httpsCallable("createBluetoothToken")({deviceId:this.deviceId}).then(function(e){var t=e.data;return[null,null==t?void 0:t.token]}).catch(function(e){return[e,null]})).then(function(e){var t,n=e[0],r=e[1];return n?Promise.reject(null!=(t=null==n?void 0:n.message)?t:n):r||Promise.reject("Failed to create Bluetooth token.")})}catch(e){return Promise.reject(e)}},t.disconnect=function(){this.deviceStore.disconnect()},C(e,[{key:"timestamp",get:function(){return I}}]),e}();function R(e){var r=e.allowWhileOnSleepMode;return t.pipe(n.withLatestFrom(e.status$),n.mergeMap(function(e){var n=e[0];return function(e,t){return!("online"!==e.state||!t&&e.sleepMode)}(e[1],r)?t.of(n):t.EMPTY}))}U.serverType="firebase";var j,L,k={bufferSize:100,updateInterval:6e4},B=/*#__PURE__*/function(){function e(e){this.options=void 0,this._offset=0,this.options=P({},k,e),this.start()}var r=e.prototype;return r.start=function(){var e=this,r=this.options,i=r.bufferSize,o=r.updateInterval,s=r.status$,c=t.range(0,i),a=t.timer(o,o).pipe(n.map(function(e){return i+e}),R({status$:s,allowWhileOnSleepMode:!0}));s.pipe(n.filter(function(e){return"online"===e.state}),n.take(1)).pipe(n.switchMap(function(){return c.pipe(n.concatWith(a),e.toOffset(),n.bufferCount(i,1),e.filterOutliers(),n.map(function(t){return e.average(t)}))})).subscribe(function(t){e._offset=t})},r.filterOutliers=function(){return t.pipe(n.map(function(e){return e.filter(v.default())}))},r.toOffset=function(){var e=this.options.getTimesync;return t.pipe(n.concatMap(function(){try{var t=Date.now();return Promise.resolve(e().then(function(e){return[null,e]}).catch(function(e){return[e]})).then(function(e){var n=e[1];if(e[0])return 0;var r=Date.now();return r-(r-t)/2-n})}catch(e){return Promise.reject(e)}}))},r.average=function(e){return Math.round(e.reduce(function(e,t){return e+t})/e.length)},C(e,[{key:"offset",get:function(){return this._offset}},{key:"timestamp",get:function(){return Date.now()+this._offset}}]),e}(),$=/*#__PURE__*/function(){function e(){this._subscriptions={}}var t=e.prototype;return t.get=function(){return this._subscriptions},t.toList=function(){return Object.values(this._subscriptions)},t.add=function(e){this._subscriptions[e.id]=e},t.remove=function(e){e.id in this._subscriptions&&Reflect.deleteProperty(this._subscriptions,e.id)},e}();!function(e){e.ONLINE="online",e.OFFLINE="offline",e.UPDATING="updating",e.BOOTING="booting",e.SHUTTING_OFF="shuttingOff"}(j||(j={})),function(e){e.UPDATING="updating",e.CHARGING="charging"}(L||(L={}));var H,x,F=/*#__PURE__*/function(){function e(e){var r,i,o,s=this;this.user=void 0,this.userClaims=void 0,this.options=void 0,this.firebaseApp=void 0,this.firebaseUser=void 0,this.firebaseDevice=void 0,this.timesync=void 0,this.subscriptionManager=void 0,this.status$=void 0,this._selectedDevice=new t.ReplaySubject(1),this.options=e,this.subscriptionManager=new $,this.firebaseApp=new E(e),this.firebaseUser=new A(this.firebaseApp),this._selectedDevice.next(void 0),this.status$=(r=this.observeNamespace("status").pipe(n.share()),i=r.pipe(n.map(function(e){return e.lastHeartbeat}),n.distinctUntilChanged(),n.map(function(){return Date.now()})),o=i.pipe(n.switchMap(function(){return t.timer(75e3)}),n.map(function(){return null}),n.startWith(null)),t.combineLatest({status:r,lostHeartbeat:o}).pipe(n.withLatestFrom(i),n.map(function(e){var t=e[0].status,n=e[1];if(!n)return t;var r=function(e,t){return"lastHeartbeat"in e&&Date.now()-t>75e3}(t,n);return r?P({},t,{state:j.OFFLINE}):t}),n.distinctUntilChanged(function(e,t){return m.default(e,t)}))).pipe(t.pipe(n.map(function(e){return e?Object.entries(e).reduce(function(e,t){var n=t[0],r=t[1];return n.startsWith("__")||(e[n]=r),e},{}):e})),n.shareReplay(1)),this.firebaseUser.onAuthStateChanged().subscribe(function(e){s.user=e}),this.firebaseUser.onUserClaimsChange().subscribe(function(e){s.userClaims=e}),this.onDeviceChange().subscribe(function(e){s.firebaseDevice&&s.firebaseDevice.disconnect(),e&&(s.firebaseDevice=new U({deviceId:e.deviceId,firebaseApp:s.firebaseApp,dependencies:{subscriptionManager:s.subscriptionManager}}),s.options.timesync&&(s.timesync=new B({status$:s.status(),getTimesync:s.firebaseDevice.getTimesync.bind(s.firebaseDevice)})))})}var r=e.prototype;return r.onDeviceChange=function(){return this._selectedDevice.asObservable().pipe(n.filter(function(e){return void 0!==e}))},r.setAutoSelectedDevice=function(){try{var e,t=function(t){var r;if(e)return t;var i=function(){if(!n.options.deviceId&&n.options.autoSelectDevice)return Promise.resolve(n.selectDevice(function(e){return e[0]})).then(function(e){return r=1,e})}();return i&&i.then?i.then(function(e){return r?e:null}):r?i:null},n=this,r=function(){if(n.options.deviceId)return Promise.resolve(n.selectDevice(function(e){return e.find(function(e){return e.deviceId===n.options.deviceId})})).then(function(t){return e=1,t})}();return Promise.resolve(r&&r.then?r.then(t):t(r))}catch(e){return Promise.reject(e)}},r.dispatchAction=function(e){try{return Promise.resolve(this.firebaseDevice.dispatchAction(e))}catch(e){return Promise.reject(e)}},r.disconnect=function(){try{return Promise.resolve(this.firebaseApp.disconnect())}catch(e){return Promise.reject(e)}},r.getInfo=function(){try{return Promise.resolve(this.firebaseDevice.getInfo())}catch(e){return Promise.reject(e)}},r.login=function(e){try{var t=this;return t.user?Promise.reject("Already logged in."):Promise.resolve(t.firebaseUser.login(e)).then(function(e){return Promise.resolve(t.setAutoSelectedDevice()).then(function(t){return P({},e,{selectedDevice:t})})})}catch(e){return Promise.reject(e)}},r.logout=function(){try{var e=this;return e.firebaseDevice&&e.firebaseDevice.disconnect(),Promise.resolve(e.firebaseUser.logout())}catch(e){return Promise.reject(e)}},r.onAuthStateChanged=function(){var e=this;return this.firebaseUser.onAuthStateChanged().pipe(n.switchMap(function(t){try{return t?Promise.resolve(e.didSelectDevice()?e.getSelectedDevice():e.setAutoSelectedDevice()).then(function(e){return P({},t,{selectedDevice:e})}):Promise.resolve(null)}catch(e){return Promise.reject(e)}}))},r.getDevices=function(){return this.firebaseUser.getDevices()},r.addDevice=function(e){return this.firebaseUser.addDevice(e)},r.removeDevice=function(e){try{var t=this;return Promise.resolve(t.firebaseUser.removeDevice(e).then(function(){return[!1]}).catch(function(e){return[!0,e]})).then(function(n){return n[0]?Promise.reject(n[1]):Promise.resolve(t.getSelectedDevice()).then(function(n){(null==n?void 0:n.deviceId)===e&&t._selectedDevice.next(null)})})}catch(e){return Promise.reject(e)}},r.transferDevice=function(e){try{var t=this;return Promise.resolve(t.firebaseUser.transferDevice(e).then(function(){return[!1]}).catch(function(e){return[!0,e]})).then(function(n){return n[0]?Promise.reject(n[1]):Promise.resolve(t.getSelectedDevice()).then(function(n){(null==n?void 0:n.deviceId)===e.deviceId&&t._selectedDevice.next(null)})})}catch(e){return Promise.reject(e)}},r.onUserDevicesChange=function(){return this.firebaseUser.onUserDevicesChange()},r.onUserClaimsChange=function(){return this.firebaseUser.onUserClaimsChange()},r.didSelectDevice=function(){try{return Promise.resolve(this.getSelectedDevice()).then(function(e){return!!e})}catch(e){return Promise.reject(e)}},r.selectDevice=function(e){try{var t=this;return Promise.resolve(t.getDevices()).then(function(n){if(!n)return Promise.reject("Did not find any devices for this user. Make sure your device is claimed by your Neurosity account.");var r="function"==typeof e?e(n):function(t){return t.find(function(t){if(!Array.isArray(e))return!1;var n=e[1];return JSON.stringify(null==t?void 0:t[e[0]])===JSON.stringify(n)})}(n);return r?Promise.resolve(t.firebaseUser.hasDevicePermission(r.deviceId)).then(function(e){return e?(t._selectedDevice.next(r),r):Promise.reject("Rejected device access due to permissions.")}):Promise.reject("A device was not provided. Try returning a device from the devicesList provided in the callback.")})}catch(e){return Promise.reject(e)}},r.getSelectedDevice=function(){try{return Promise.resolve(t.firstValueFrom(this._selectedDevice))}catch(e){return Promise.reject(e)}},r.status=function(){return this.status$},r.observeNamespace=function(e){var r=this;return this.onDeviceChange().pipe(n.switchMap(function(n){return n?t.fromEventPattern(function(t){return r.firebaseDevice.onNamespace(e,t)},function(t){return r.firebaseDevice.offNamespace(e,t)}):t.EMPTY}))},r.onceNamespace=function(e){try{return Promise.resolve(this.firebaseDevice.onceNamespace(e))}catch(e){return Promise.reject(e)}},r.createAccount=function(e){return this.firebaseUser.createAccount(e)},r.deleteAccount=function(){return this.firebaseUser.deleteAccount()},r.createBluetoothToken=function(){return this.firebaseDevice.createBluetoothToken()},r.createCustomToken=function(){return this.firebaseUser.createCustomToken()},r.removeOAuthAccess=function(){return this.firebaseUser.removeOAuthAccess()},r.onUserExperiments=function(){return this.firebaseUser.onUserExperiments()},r.deleteUserExperiment=function(e){return this.firebaseUser.deleteUserExperiment(e)},r.getTimesyncOffset=function(){return this.timesync.offset},r.changeSettings=function(e){return this.firebaseDevice.changeSettings(e)},r.goOffline=function(){this.firebaseApp.goOffline()},r.goOnline=function(){this.firebaseApp.goOnline()},r.__getApp=function(){return this.firebaseApp.app},C(e,[{key:"actions",get:function(){var e=this;return{dispatch:function(t){return e.firebaseDevice.dispatchAction(t)}}}},{key:"metrics",get:function(){var e=this;return{next:function(t,n){e.firebaseDevice.nextMetric(t,n)},on:function(t,n){return e.firebaseDevice.onMetric(t,n)},subscribe:function(t){var n=e.firebaseDevice.subscribeToMetric(t);return e.subscriptionManager.add(n),n},unsubscribe:function(t,n){e.subscriptionManager.remove(t),e.firebaseDevice.unsubscribeFromMetric(t),e.firebaseDevice.removeMetricListener(t,n)}}}},{key:"skills",get:function(){var e=this;return{get:function(t){try{return Promise.resolve(e.firebaseDevice.getSkill(t))}catch(e){return Promise.reject(e)}}}}},{key:"timestamp",get:function(){return this.options.timesync?this.timesync.timestamp:Date.now()}}]),e}();!function(e){e.WIFI="wifi",e.BLUETOOTH="bluetooth"}(H||(H={})),function(e){e.WIFI_ONLY="wifi-only",e.WIFI_WITH_BLUETOOTH_FALLBACK="wifi-with-bluetooth-fallback",e.BLUETOOTH_WITH_WIFI_FALLBACK="bluetooth-with-wifi-fallback"}(x||(x={}));var W,V,q,z,Y,G,J="Neurosity SDK: ",K=new Error(J+'A device must be selected. Make sure to call "neurosity.selectDevice()"'),Q=function(e,t){return new Error(""+J+e+" not supported on model version "+t+". See docs.neurosity.co for more info.")},X=function(e,t){return new Error(""+J+e+" location not supported on model version "+t+". Check spelling or see docs.neurosity.co for more info.")},Z=function(e){return Object.keys(l.metrics[e])},ee="haptics",te="accel",ne=((W={})[1]=[],W[2]=[ee,te],W[3]=[ee,te],W),re=((z={})[1]={},z[2]={motorByMotorName:(V={},V.P7=[],V.P8=[],V)},z[3]={motorByMotorName:(q={},q.P7=[],q.P8=[],q)},z),ie={__proto__:null,strongClick100:"strongClick100",strongClick60:"strongClick60",strongClick30:"strongClick30",sharpClick100:"sharpClick100",sharpClick60:"sharpClick60",sharpClick30:"sharpClick30",softBump100:"softBump100",softBump60:"softBump60",softBump30:"softBump30",doubleClick100:"doubleClick100",doubleClick60:"doubleClick60",tripleClick100:"tripleClick100",softFuzz60:"softFuzz60",strongBuzz100:"strongBuzz100",alert750ms:"alert750ms",alert1000ms:"alert1000ms",strongClick1_100:"strongClick1_100",strongClick2_80:"strongClick2_80",strongClick3_60:"strongClick3_60",strongClick4_30:"strongClick4_30",mediumClick1_100:"mediumClick1_100",mediumClick2_80:"mediumClick2_80",mediumClick3_60:"mediumClick3_60",sharpTick1_100:"sharpTick1_100",sharpTick2_80:"sharpTick2_80",sharpTick3_60:"sharpTick3_60",shortDoubleClickStrong1_100:"shortDoubleClickStrong1_100",shortDoubleClickStrong2_80:"shortDoubleClickStrong2_80",shortDoubleClickStrong3_60:"shortDoubleClickStrong3_60",shortDoubleClickStrong4_30:"shortDoubleClickStrong4_30",shortDoubleClickMedium1_100:"shortDoubleClickMedium1_100",shortDoubleClickMedium2_80:"shortDoubleClickMedium2_80",shortDoubleClickMedium3_60:"shortDoubleClickMedium3_60",shortDoubleSharpTick1_100:"shortDoubleSharpTick1_100",shortDoubleSharpTick2_80:"shortDoubleSharpTick2_80",shortDoubleSharpTick3_60:"shortDoubleSharpTick3_60",longDoubleSharpClickStrong1_100:"longDoubleSharpClickStrong1_100",longDoubleSharpClickStrong2_80:"longDoubleSharpClickStrong2_80",longDoubleSharpClickStrong3_60:"longDoubleSharpClickStrong3_60",longDoubleSharpClickStrong4_30:"longDoubleSharpClickStrong4_30",longDoubleSharpClickMedium1_100:"longDoubleSharpClickMedium1_100",longDoubleSharpClickMedium2_80:"longDoubleSharpClickMedium2_80",longDoubleSharpClickMedium3_60:"longDoubleSharpClickMedium3_60",longDoubleSharpTick1_100:"longDoubleSharpTick1_100",longDoubleSharpTick2_80:"longDoubleSharpTick2_80",longDoubleSharpTick3_60:"longDoubleSharpTick3_60",buzz1_100:"buzz1_100",buzz2_80:"buzz2_80",buzz3_60:"buzz3_60",buzz4_40:"buzz4_40",buzz5_20:"buzz5_20",pulsingStong1_100:"pulsingStong1_100",pulsingStong2_60:"pulsingStong2_60",pulsingMedium1_100:"pulsingMedium1_100",pulsingMedium2_60:"pulsingMedium2_60",pulsingSharp1_100:"pulsingSharp1_100",pulsingSharp2_60:"pulsingSharp2_60",transistionClick1_100:"transistionClick1_100",transistionClick2_80:"transistionClick2_80",transistionClick3_60:"transistionClick3_60",transistionClick4_40:"transistionClick4_40",transistionClick5_20:"transistionClick5_20",transistionClick6_10:"transistionClick6_10",transistionHum1_100:"transistionHum1_100",transistionHum2_80:"transistionHum2_80",transistionHum3_60:"transistionHum3_60",transistionHum4_40:"transistionHum4_40",transistionHum5_20:"transistionHum5_20",transistionHum6_10:"transistionHum6_10",transitionRampDownLongSmooth1_100_to_0:"transitionRampDownLongSmooth1_100_to_0",transitionRampDownLongSmooth2_100_to_0:"transitionRampDownLongSmooth2_100_to_0",transitionRampDownMediumSmooth1_100_to_0:"transitionRampDownMediumSmooth1_100_to_0",transitionRampDownMediumSmooth2_100_to_0:"transitionRampDownMediumSmooth2_100_to_0",transitionRampDownShortSmooth1_100_to_0:"transitionRampDownShortSmooth1_100_to_0",transitionRampDownShortSmooth2_100_to_0:"transitionRampDownShortSmooth2_100_to_0",transitionRampDownLongSharp1_100_to_0:"transitionRampDownLongSharp1_100_to_0",transitionRampDownLongSharp2_100_to_0:"transitionRampDownLongSharp2_100_to_0",transitionRampDownLongMedium1_100_to_0:"transitionRampDownLongMedium1_100_to_0",transitionRampDownLongMedium2_100_to_0:"transitionRampDownLongMedium2_100_to_0",transitionRampDownShortSharp1_100_to_0:"transitionRampDownShortSharp1_100_to_0",transitionRampDownShortSharp2_100_to_0:"transitionRampDownShortSharp2_100_to_0",transitionRampUpLongSmooth1_0_to_100:"transitionRampUpLongSmooth1_0_to_100",transitionRampUpLongSmooth2_0_to_100:"transitionRampUpLongSmooth2_0_to_100",transitionRampUpMediumSmooth1_0_to_100:"transitionRampUpMediumSmooth1_0_to_100",transitionRampUpMediumSmooth2_0_to_100:"transitionRampUpMediumSmooth2_0_to_100",transitionRampUpShortSmooth1_0_to_100:"transitionRampUpShortSmooth1_0_to_100",transitionRampUpShortSmooth2_0_to_100:"transitionRampUpShortSmooth2_0_to_100",transitionRampUpLongSharp1_0_to_100:"transitionRampUpLongSharp1_0_to_100",transitionRampUpLongSharp2_0_to_100:"transitionRampUpLongSharp2_0_to_100",transitionRampUpMediumSharp1_0_to_100:"transitionRampUpMediumSharp1_0_to_100",transitionRampUpMediumSharp2_0_to_100:"transitionRampUpMediumSharp2_0_to_100",transitionRampUpShortSharp1_0_to_100:"transitionRampUpShortSharp1_0_to_100",transitionRampUpShortSharp2_0_to_100:"transitionRampUpShortSharp2_0_to_100",transitionRampDownLongSmooth1_50_to_0:"transitionRampDownLongSmooth1_50_to_0",transitionRampDownLongSmooth2_50_to_0:"transitionRampDownLongSmooth2_50_to_0",transitionRampDownMediumSmooth1_50_to_0:"transitionRampDownMediumSmooth1_50_to_0",transitionRampDownMediumSmooth2_50_to_0:"transitionRampDownMediumSmooth2_50_to_0",transitionRampDownShortSmooth1_50_to_0:"transitionRampDownShortSmooth1_50_to_0",transitionRampDownShortSmooth2_50_to_0:"transitionRampDownShortSmooth2_50_to_0",transitionRampDownLongSharp1_50_to_0:"transitionRampDownLongSharp1_50_to_0",transitionRampDownLongSharp2_50_to_0:"transitionRampDownLongSharp2_50_to_0",transitionRampDownMediumSharp1_50_to_0:"transitionRampDownMediumSharp1_50_to_0",transitionRampDownMediumSharp2_50_to_0:"transitionRampDownMediumSharp2_50_to_0",transitionRampDownShortSharp1_50_to_0:"transitionRampDownShortSharp1_50_to_0",transitionRampDownShortSharp2_50_to_0:"transitionRampDownShortSharp2_50_to_0",transitionRampUpLongSmooth1_0_to_50:"transitionRampUpLongSmooth1_0_to_50",transitionRampUpLongSmooth2_0_to_50:"transitionRampUpLongSmooth2_0_to_50",transitionRampUpMediumSmooth1_0_to_50:"transitionRampUpMediumSmooth1_0_to_50",transitionRampUpMediumSmooth2_0_to_50:"transitionRampUpMediumSmooth2_0_to_50",transitionRampUpShortSmooth1_0_to_50:"transitionRampUpShortSmooth1_0_to_50",transitionRampUpShortSmooth2_0_to_50:"transitionRampUpShortSmooth2_0_to_50",transitionRampUpLongSharp1_0_to_50:"transitionRampUpLongSharp1_0_to_50",transitionRampUpLongSharp2_0_to_50:"transitionRampUpLongSharp2_0_to_50",transitionRampUpMediumSharp1_0_to_50:"transitionRampUpMediumSharp1_0_to_50",transitionRampUpMediumSharp2_0_to_50:"transitionRampUpMediumSharp2_0_to_50",transitionRampUpShortSharp1_0_to_50:"transitionRampUpShortSharp1_0_to_50",transitionRampUpShortSharp2_0_to_50:"transitionRampUpShortSharp2_0_to_50",longBuzzForProgrammaticStopping_100:"longBuzzForProgrammaticStopping_100",smoothHum1_50:"smoothHum1_50",smoothHum2_40:"smoothHum2_40",smoothHum3_30:"smoothHum3_30",smoothHum4_20:"smoothHum4_20",smoothHum5_10:"smoothHum5_10"},oe={"marker/add":"write:brainwave-markers","brainwaves/record":"write:brainwaves","haptics/queue":"write:haptics","training/record":"write:kinesis","training/stop":"write:kinesis","training/stopAll":"write:kinesis","wifi/reset":"write:wifi-settings"},se={accelerometer:"read:accelerometer",brainwaves:"read:brainwaves",calm:"read:calm",focus:"read:focus",kinesis:"read:kinesis",predictions:"read:kinesis",signalQuality:"read:signal-quality",getInfo:"read:devices-info",getSelectedDevice:"read:devices-info",selectDevice:"read:devices-info",onDeviceChange:"read:devices-info",onUserDevicesChange:"read:devices-info",settings:"read:devices-settings",changeSettings:"write:devices-settings",status:"read:devices-status",addDevice:"write:devices-add",removeDevice:"write:devices-remove",transferDevice:"write:devices-remove"};function ce(e,t){var n=null!=e?e:{};if(!n.oauth)return[!1,null];var r=n.scopes.split(","),i=se[t];return r.includes(i)?[!1,null]:[!0,ae(i)]}function ae(){return new Error(J+"You are trying to access data with an OAuth token without access to the following scopes: "+[].slice.call(arguments).join(", ")+".")}function ue(e){return e.emulator?"http://"+e.emulatorHost+":"+e.emulatorFunctionsPort+"/neurosity-device/us-central1":"https://us-central1-neurosity-device.cloudfunctions.net"}function le(){return"undefined"!=typeof process&&null!=process.versions&&null!=process.versions.node}function he(e,r){var i=e.cloudClient,o=e.onDeviceChange,s=e.status,c=r.metric,a=r.labels,u=r.atomic,l=function(e,t,n){var r=Z(e).join(", ");return t.length?function(e,t){return"skill"in t&&"metrics"in t.skill&&!t.skill.metrics.includes(e)}(e,n)?new Error(J+"No permission to access the "+e+" metric. To access this metric, edit the skill's permissions"):!!function(e,t){var n=Z(e);return!t.every(function(e){return n.includes(e)})}(e,t)&&new Error(J+"One ore more labels provided to "+e+" are invalid. The valid labels for "+e+" are "+r):new Error(J+"At least one label is required for "+e+" metric. Please add one of the following labels: "+r)}(c,a,e.options);if(l)return t.throwError(function(){return l});var h=new t.Observable(function(e){var t=(u?[i.metrics.subscribe({metric:c,labels:a,atomic:u})]:a.map(function(e){return i.metrics.subscribe({metric:c,labels:[e],atomic:u})})).map(function(t){return{subscription:t,listener:i.metrics.on(t,function(){e.next.apply(e,[].slice.call(arguments))})}});return function(){t.forEach(function(e){i.metrics.unsubscribe(e.subscription,e.listener)})}});return o().pipe(n.switchMap(function(e){return e?h.pipe(R({status$:s(),allowWhileOnSleepMode:!1})):t.EMPTY}))}function de(){return Math.floor(1e5+9e5*Math.random())}function fe(e){var r=e.delimiter;return t.pipe(n.scan(function(e,t){var n=e[0]+t;if(!n.includes(r))return[n,""];if(n.endsWith(r))return["",n];var i=n.lastIndexOf(r)+r.length,o=n.slice(0,i);return[n.slice(i),o]},["",""]),n.map(function(e){return e[1].slice(0,-r.length)}),n.filter(function(e){return!!e.length}))}e.BLUETOOTH_CONNECTION=void 0,(Y=e.BLUETOOTH_CONNECTION||(e.BLUETOOTH_CONNECTION={})).SCANNING="scanning",Y.CONNECTED="connected",Y.CONNECTING="connecting",Y.DISCONNECTING="disconnecting",Y.DISCONNECTED="disconnected",e.TRANSPORT_TYPE=void 0,(G=e.TRANSPORT_TYPE||(e.TRANSPORT_TYPE={})).WEB="web",G.REACT_NATIVE="reactNative";var me=new TextEncoder,pe=new TextDecoder("utf-8");function ve(t,n){return t===e.TRANSPORT_TYPE.REACT_NATIVE?[].concat(me.encode(n)):me.encode(n)}function ge(t,n){return pe.decode(t===e.TRANSPORT_TYPE.REACT_NATIVE?new Uint8Array(n):n)}var _e=Object.fromEntries(Object.entries(l.BLUETOOTH_CHARACTERISTICS).map(function(e){return e.reverse()}));function be(e){return!!e&&Number(e.modelVersion)>=3&&!(null!=e&&e.emulator)&&_.default(e.osVersion,"16.0.0")}function Ce(e,t){try{var n=e()}catch(e){return t(e)}return n&&n.then?n.then(void 0,t):n}var Pe={autoConnect:!0},Se=/*#__PURE__*/function(){function r(r){var i,o,s=this;if(void 0===r&&(r={}),this.type=e.TRANSPORT_TYPE.WEB,this.options=void 0,this.device=void 0,this.server=void 0,this.service=void 0,this.characteristicsByName={},this.connection$=new t.BehaviorSubject(e.BLUETOOTH_CONNECTION.DISCONNECTED),this.pendingActions$=new t.BehaviorSubject([]),this.logs$=new t.ReplaySubject(10),this.onDisconnected$=this._onDisconnected().pipe(n.share()),this.connectionStream$=this.connection$.asObservable().pipe(n.filter(function(e){return!!e}),n.distinctUntilChanged(),n.shareReplay(1)),this._isAutoConnectEnabled$=new t.ReplaySubject(1),this.options=P({},Pe,r),"undefined"==typeof window||!(null==(i=window)||null==(o=i.navigator)?void 0:o.bluetooth)){var c="Web Bluetooth is not supported";throw this.addLog(c),new Error(c)}this._isAutoConnectEnabled$.subscribe(function(e){s.addLog("Auto connect: "+(e?"enabled":"disabled"))}),this._isAutoConnectEnabled$.next(this.options.autoConnect),this.connection$.asObservable().subscribe(function(e){s.addLog("connection status is "+e)}),this.onDisconnected$.subscribe(function(){s.connection$.next(e.BLUETOOTH_CONNECTION.DISCONNECTED)})}var i=r.prototype;return i._getPairedDevices=function(){try{return Promise.resolve(navigator.bluetooth.getDevices())}catch(e){return Promise.reject(e)}},i._autoConnect=function(r){var i=this,o=this,s=this;return this._isAutoConnectEnabled$.pipe(n.switchMap(function(e){return e?t.merge(r,s.onDisconnected$.pipe(n.switchMap(function(){return r}))):t.NEVER}),n.switchMap(function(e){return be(e)?t.of(e):t.EMPTY}),n.switchMap(function(e){try{var t=e.deviceNickname;return i.isConnected()?(i.addLog("Auto connect: "+t+" is already connected. Skipping auto connect."),Promise.resolve()):Promise.resolve(i._getPairedDevices().then(function(e){return[null,e]}).catch(function(e){return[e,null]})).then(function(e){var n,r=e[0],o=e[1];if(r)throw new Error("failed to get devices: "+(null!=(n=null==r?void 0:r.message)?n:r));i.addLog("Auto connect: found "+o.length+" devices "+o.map(function(e){return e.name}).join(", "));var s=o.findLast(function(e){return e.name===t});if(!s)throw new Error("couldn't find selected device in the list of paired devices.");return i.addLog("Auto connect: "+t+" was detected and previously paired"),s})}catch(e){return Promise.reject(e)}}),n.tap(function(){s.connection$.next(e.BLUETOOTH_CONNECTION.SCANNING)}),n.switchMap(function(e){return function(e){return new t.Observable(function(t){var n=new AbortController,r=n.signal,i=e.addEventListener("advertisementreceived",function(e){n.abort(),t.next(e),t.complete()},{once:!0});try{e.watchAdvertisements({signal:r})}catch(e){t.error(e)}return function(){n.abort(),e.removeEventListener("advertisementreceived",i)}})}(e)}),n.switchMap(function(e){try{return o.addLog("Advertisement received for "+e.device.name),Promise.resolve(o.getServerServiceAndCharacteristics(e.device))}catch(e){return Promise.reject(e)}}))},i.enableAutoConnect=function(e){this._isAutoConnectEnabled$.next(e)},i.addLog=function(e){this.logs$.next(e)},i.isConnected=function(){return this.connection$.getValue()===e.BLUETOOTH_CONNECTION.CONNECTED},i.connection=function(){return this.connectionStream$},i.connect=function(e){try{var t=this;return Promise.resolve(Ce(function(){return Promise.resolve(t.requestDevice(e)).then(function(e){return Promise.resolve(t.getServerServiceAndCharacteristics(e)).then(function(){})})},function(e){return Promise.reject(e)}))}catch(e){return Promise.reject(e)}},i.requestDevice=function(e){try{var t=this;return Promise.resolve(Ce(function(){t.addLog("Requesting Bluetooth Device...");var n=l.BLUETOOTH_DEVICE_NAME_PREFIXES.map(function(e){return{namePrefix:e}});return Promise.resolve(window.navigator.bluetooth.requestDevice({filters:[].concat(e?[{name:e}]:n,[{manufacturerData:[{companyIdentifier:l.BLUETOOTH_COMPANY_IDENTIFIER_HEX}]}]),optionalServices:[l.BLUETOOTH_PRIMARY_SERVICE_UUID_HEX]}))},function(e){return Promise.reject(e)}))}catch(e){return Promise.reject(e)}},i.getServerServiceAndCharacteristics=function(t){try{var n=this;return Promise.resolve(Ce(function(){return n.device=t,n.connection$.getValue()===e.BLUETOOTH_CONNECTION.CONNECTING||n.connection$.next(e.BLUETOOTH_CONNECTION.CONNECTING),Promise.resolve(t.gatt.connect()).then(function(t){return n.server=t,n.addLog("Getting service..."),Promise.resolve(n.server.getPrimaryService(l.BLUETOOTH_PRIMARY_SERVICE_UUID_HEX)).then(function(t){return n.service=t,n.addLog("Got service "+n.service.uuid+", getting characteristics..."),Promise.resolve(n.service.getCharacteristics()).then(function(t){n.addLog("Got characteristics"),n.characteristicsByName=Object.fromEntries(t.map(function(e){return[_e[e.uuid],e]})),n.connection$.next(e.BLUETOOTH_CONNECTION.CONNECTED)})})})},function(e){return Promise.reject(e)}))}catch(e){return Promise.reject(e)}},i._onDisconnected=function(){var r=this;return this.connection$.asObservable().pipe(n.switchMap(function(n){return n===e.BLUETOOTH_CONNECTION.CONNECTED?we(r.device,"gattserverdisconnected"):t.NEVER}))},i.disconnect=function(){try{var e,t,n=this;return(null==n||null==(e=n.device)||null==(t=e.gatt)?void 0:t.connected)&&n.device.gatt.disconnect(),Promise.resolve()}catch(e){return Promise.reject(e)}},i.getCharacteristicByName=function(e){try{var t;return Promise.resolve(null==(t=this.characteristicsByName)?void 0:t[e])}catch(e){return Promise.reject(e)}},i.subscribeToCharacteristic=function(r){var i=this,o=this,s=r.characteristicName,c=r.manageNotifications,a=void 0===c||c,u=t.defer(function(){return o.getCharacteristicByName(s)}).pipe(n.switchMap(function(e){try{var t=function(){if(i.isConnected()&&a){var t=Ce(function(){return Promise.resolve(e.startNotifications()).then(function(){i.addLog("Started notifications for "+s+" characteristic")})},function(e){var t;i.addLog("Attemped to stop notifications for "+s+" characteristic: "+(null!=(t=null==e?void 0:e.message)?t:e))});if(t&&t.then)return t.then(function(){})}}();return Promise.resolve(t&&t.then?t.then(function(){return e}):e)}catch(e){return Promise.reject(e)}}),n.switchMap(function(e){return we(e,"characteristicvaluechanged",function(){try{var t=function(){if(o.isConnected()&&a){var t=Ce(function(){return Promise.resolve(e.stopNotifications()).then(function(){o.addLog("Stopped notifications for "+s+" characteristic")})},function(e){var t;o.addLog("Attemped to stop notifications for "+s+" characteristic: "+(null!=(t=null==e?void 0:e.message)?t:e))});if(t&&t.then)return t.then(function(){})}}();return Promise.resolve(t&&t.then?t.then(function(){}):void 0)}catch(e){return Promise.reject(e)}})}),n.map(function(e){var t=e.target.value,n=ge(o.type,t);return o.addLog("Received chunk with buffer size of "+t.byteLength+" and decoded size "+n.length+" for "+s+" characteristic: \n"+n),n}),fe({delimiter:l.BLUETOOTH_CHUNK_DELIMITER}),n.map(function(e){try{return JSON.parse(e)}catch(n){var t;return o.addLog("Failed to parse JSON for "+s+" characteristic. Falling back to unparsed string. "+(null!=(t=null==n?void 0:n.message)?t:n)),e}}));return this.connection$.pipe(n.switchMap(function(n){return n===e.BLUETOOTH_CONNECTION.CONNECTED?u:t.NEVER}))},i.readCharacteristic=function(e,t){void 0===t&&(t=!1);try{var n=this;return Promise.resolve(Ce(function(){return n.addLog("Reading characteristic: "+e),Promise.resolve(n.getCharacteristicByName(e)).then(function(r){return r?Promise.resolve(r.readValue()).then(function(r){var i=ge(n.type,r),o=t?JSON.parse(i):i;return n.addLog("Received read data from "+e+" characteristic: \n"+o),o}):(n.addLog("Did not fund "+e+" characteristic"),Promise.reject("Did not find characteristic by the name: "+e))})},function(e){return Promise.reject("Error reading characteristic: "+e.message)}))}catch(e){return Promise.reject(e)}},i.writeCharacteristic=function(e,t){try{var n=this;return n.addLog("Writing characteristic: "+e),Promise.resolve(n.getCharacteristicByName(e)).then(function(r){if(!r)return n.addLog("Did not fund "+e+" characteristic"),Promise.reject("Did not find characteristic by the name: "+e);var i=ve(n.type,t);return Promise.resolve(r.writeValueWithResponse(i)).then(function(){})})}catch(e){return Promise.reject(e)}},i._addPendingAction=function(e){var t=this.pendingActions$.getValue();this.pendingActions$.next([].concat(t,[e]))},i._removePendingAction=function(e){var t=this.pendingActions$.getValue();this.pendingActions$.next(t.filter(function(t){return t!==e}))},i._autoToggleActionNotifications=function(r){try{var i,o=this,s=!1,c=o.connection$.asObservable().pipe(n.switchMap(function(r){return r===e.BLUETOOTH_CONNECTION.CONNECTED?t.defer(function(){return o.getCharacteristicByName("actions")}).pipe(n.switchMap(function(e){return i=e,o.pendingActions$})):t.NEVER}),n.tap(function(e){try{var t=function(){var e=function(){if(!n&&s){s=!1;var e=Ce(function(){return Promise.resolve(i.stopNotifications()).then(function(){o.addLog("Stopped notifications for actions characteristic")})},function(e){var t;o.addLog("Attemped to stop notifications for [actions] characteristic: "+(null!=(t=null==e?void 0:e.message)?t:e))});if(e&&e.then)return e.then(function(){})}}();if(e&&e.then)return e.then(function(){})},n=!!e.length,r=function(){if(n&&!s){s=!0;var e=Ce(function(){return Promise.resolve(i.startNotifications()).then(function(){o.addLog("Started notifications for [actions] characteristic")})},function(e){var t;o.addLog("Attemped to start notifications for [actions] characteristic: "+(null!=(t=null==e?void 0:e.message)?t:e))});if(e&&e.then)return e.then(function(){})}}();return Promise.resolve(r&&r.then?r.then(t):t())}catch(e){return Promise.reject(e)}}));return r.pipe(n.switchMap(function(e){return be(e)?c:t.EMPTY})).subscribe(),Promise.resolve()}catch(e){return Promise.reject(e)}},i.dispatchAction=function(e){var r=e.characteristicName,i=e.action;try{var o=this,s=i.responseRequired,c=void 0!==s&&s,a=i.responseTimeout,u=void 0===a?6e4:a;return Promise.resolve(new Promise(function(e,s){try{return Promise.resolve(o.getCharacteristicByName(r).catch(function(){s("Did not find characteristic by the name: "+r)})).then(function(a){if(a){var l=de(),h=JSON.stringify(P({actionId:l},i));if(o.addLog("Dispatched action with id "+l),c&&u){o._addPendingAction(l);var d=t.timer(u).subscribe(function(){o._removePendingAction(l),s("Action with id "+l+" timed out after "+u+"ms")});o.subscribeToCharacteristic({characteristicName:r,manageNotifications:!1}).pipe(n.filter(function(e){return(null==e?void 0:e.actionId)===l}),n.take(1)).subscribe(function(t){d.unsubscribe(),o._removePendingAction(l),e(t)}),o.writeCharacteristic(r,h).catch(function(e){o._removePendingAction(l),s(e.message)})}else o.writeCharacteristic(r,h).then(function(){e(null)}).catch(function(e){s(e.message)})}})}catch(e){return Promise.reject(e)}}))}catch(e){return Promise.reject(e)}},r}();function we(e,n,r){return t.fromEventPattern(function(t){e.addEventListener(n,t)},function(t){try{var i=function(){e.removeEventListener(n,t)},o=function(){if(r)return Promise.resolve(r()).then(function(){})}();return Promise.resolve(o&&o.then?o.then(i):i())}catch(e){return Promise.reject(e)}})}function De(e,t){try{var n=e()}catch(e){return t(e)}return n&&n.then?n.then(void 0,t):n}var Te={autoConnect:!0},ye=/*#__PURE__*/function(){function r(r){var i=this;if(this.type=e.TRANSPORT_TYPE.REACT_NATIVE,this.options=void 0,this.BleManager=void 0,this.bleManagerEmitter=void 0,this.platform=void 0,this.bleEvents=void 0,this.device=void 0,this.characteristicsByName={},this.connection$=new t.BehaviorSubject(e.BLUETOOTH_CONNECTION.DISCONNECTED),this.pendingActions$=new t.BehaviorSubject([]),this.logs$=new t.ReplaySubject(10),this.onDisconnected$=void 0,this.connectionStream$=this.connection$.asObservable().pipe(n.filter(function(e){return!!e}),n.distinctUntilChanged(),n.shareReplay(1)),this._isAutoConnectEnabled$=new t.ReplaySubject(1),!r){var o="React Native transport: missing options.";throw this.addLog(o),new Error(o)}this.options=P({},Te,r);var s=this.options,c=s.BleManager,a=s.bleManagerEmitter,u=s.platform,l=s.autoConnect;if(!c){var h="React Native option: BleManager not provided.";throw this.addLog(h),new Error(h)}if(!a){var d="React Native option: bleManagerEmitter not provided.";throw this.addLog(d),new Error(d)}if(!u){var f="React Native option: platform not provided.";throw this.addLog(f),new Error(f)}this.BleManager=c,this.bleManagerEmitter=a,this.platform=u,this._isAutoConnectEnabled$.next(l),this._isAutoConnectEnabled$.subscribe(function(e){i.addLog("Auto connect: "+(e?"enabled":"disabled"))}),this.bleEvents={stopScan$:this._fromEvent("BleManagerStopScan"),discoverPeripheral$:this._fromEvent("BleManagerDiscoverPeripheral"),connectPeripheral$:this._fromEvent("BleManagerConnectPeripheral"),disconnectPeripheral$:this._fromEvent("BleManagerDisconnectPeripheral"),didUpdateValueForCharacteristic$:this._fromEvent("BleManagerDidUpdateValueForCharacteristic"),didUpdateState$:this._fromEvent("BleManagerDidUpdateState")},this.onDisconnected$=this.bleEvents.disconnectPeripheral$.pipe(n.share()),this.BleManager.start({showAlert:!1}).then(function(){i.addLog("BleManger started")}).catch(function(e){var t;i.addLog("BleManger failed to start. "+(null!=(t=null==e?void 0:e.message)?t:e))}),this.connection$.asObservable().subscribe(function(e){i.addLog("connection status is "+e)}),this.onDisconnected$.subscribe(function(){i.connection$.next(e.BLUETOOTH_CONNECTION.DISCONNECTED)})}var i=r.prototype;return i.addLog=function(e){this.logs$.next(e)},i.isConnected=function(){return this.connection$.getValue()===e.BLUETOOTH_CONNECTION.CONNECTED},i._autoConnect=function(e){var r=this,i=this,o=this.onDisconnected$.pipe(n.switchMap(function(){return e}));return this._isAutoConnectEnabled$.pipe(n.switchMap(function(n){return n?t.merge(e,o):t.NEVER}),n.switchMap(function(e){return be(e)?i.scan().pipe(n.switchMap(function(n){var r=n.find(function(t){return t.name===(null==e?void 0:e.deviceNickname)});return r?t.of(r):t.NEVER}),n.distinct(function(e){return e.id}),n.take(1)):t.NEVER}),n.switchMap(function(e){try{return Promise.resolve(r.connect(e))}catch(e){return Promise.reject(e)}}))},i.enableAutoConnect=function(e){this._isAutoConnectEnabled$.next(e)},i.connection=function(){return this.connectionStream$},i._fromEvent=function(e){var r=this;return t.fromEventPattern(function(t){r.bleManagerEmitter.addListener(e,t)},function(){r.bleManagerEmitter.removeAllListeners(e)}).pipe(n.share())},i.scan=function(r){var i,o,s=this,c=null!=(i=null==r?void 0:r.seconds)?i:10,a=null!=(o=null==r?void 0:r.once)&&o,u=[l.BLUETOOTH_PRIMARY_SERVICE_UUID_STRING],h={},d=new t.Observable(function(e){try{s.BleManager.scan(u,c,!0,h).then(function(){s.addLog("BleManger scanning "+(a?"once":"indefintely")),e.next()})}catch(n){var t;s.addLog("BleManger scanning "+(a?"once":"indefintely")+" failed. "+(null!=(t=null==n?void 0:n.message)?t:n)),e.error(n)}return function(){s.BleManager.stopScan()}}),f=(a?d:t.timer(0,1e4).pipe(n.switchMap(function(){return d}))).pipe(n.tap(function(){s.connection$.next(e.BLUETOOTH_CONNECTION.SCANNING)}),n.takeUntil(this.onDisconnected$),n.switchMap(function(){return s.bleEvents.discoverPeripheral$}),n.filter(function(e){var t,n,r,i=null!=(t=null!=(n=null==e||null==(r=e.advertising)?void 0:r.localName)?n:e.name)?t:"";if(!i)return!1;var o=-1!==l.BLUETOOTH_DEVICE_NAME_PREFIXES.findIndex(function(e){return i.startsWith(e)});return o}),n.scan(function(e,t){var n,r,i,o,c,a,u,l,h=null!=(n=null!=(r=null==t||null==(i=t.advertising)?void 0:i.localName)?r:t.name)?n:"",d=null==(o=ge(s.type,null!=(c=null==t||null==(a=t.advertising)||null==(u=a.manufacturerData)?void 0:u.bytes)?c:[]))||null==o.slice?void 0:o.slice(2);return P({},e,((l={})[t.id]=P({},t,{name:h,manufactureDataString:d}),l))},{}),n.distinctUntilChanged(function(e,t){return JSON.stringify(e)===JSON.stringify(t)}),n.map(function(e){return Object.values(e)}),n.share());return f},i.connect=function(t){try{var n=this;return Promise.resolve(new Promise(function(r,i){try{return Promise.resolve(De(function(){if(t)return n.connection$.next(e.BLUETOOTH_CONNECTION.CONNECTING),Promise.resolve(n.BleManager.connect(t.id)).then(function(){return n.addLog("Getting service..."),Promise.resolve(n.BleManager.retrieveServices(t.id,[l.BLUETOOTH_PRIMARY_SERVICE_UUID_STRING])).then(function(o){function s(){n.addLog("Successfully connected to peripheral "+t.id),n.connection$.next(e.BLUETOOTH_CONNECTION.CONNECTED),r()}if(!o)return n.addLog("Could not retreive services"),void i("Could not retreive services");n.addLog("Got service "+l.BLUETOOTH_PRIMARY_SERVICE_UUID_STRING+", getting characteristics..."),n.device=t,n.characteristicsByName=Object.fromEntries(o.characteristics.map(function(e){return[_e[e.characteristic.toLowerCase()],{characteristicUUID:e.characteristic,serviceUUID:e.service,peripheralId:t.id}]})),n.addLog("Got characteristics.");var c=function(){if("android"===n.platform)return n.addLog("Setting Android MTU to 512"),Promise.resolve(n.BleManager.requestMTU(t.id,512)).then(function(){})}();return c&&c.then?c.then(s):s()})});n.addLog("Peripheral not found")},function(e){i(e)}))}catch(e){return Promise.reject(e)}}))}catch(e){return Promise.reject(e)}},i.disconnect=function(){try{var e=this;return Promise.resolve(De(function(){var t=function(){var t;if(e.isConnected()&&null!=e&&null!=(t=e.device)&&t.id)return Promise.resolve(e.BleManager.disconnect(e.device.id)).then(function(){})}();if(t&&t.then)return t.then(function(){})},function(e){return Promise.reject(e)}))}catch(e){return Promise.reject(e)}},i.getCharacteristicByName=function(e){var t;if(!(e in this.characteristicsByName))throw new Error("Characteristic by name "+e+" is not found");return null==(t=this.characteristicsByName)?void 0:t[e]},i.subscribeToCharacteristic=function(r){var i=this,o=r.characteristicName,s=r.manageNotifications,c=void 0===s||s;return this.connection$.pipe(n.switchMap(function(r){return r===e.BLUETOOTH_CONNECTION.CONNECTED?(s=i.getCharacteristicByName(o),a=s.peripheralId,u=s.serviceUUID,h=s.characteristicUUID,t.defer(function(){try{var e=function(){if(c){var e=De(function(){return Promise.resolve(i.BleManager.startNotification(a,u,h)).then(function(){i.addLog("Started notifications for "+o+" characteristic")})},function(e){var t;i.addLog("Attemped to stop notifications for "+o+" characteristic: "+(null!=(t=null==e?void 0:e.message)?t:e))});if(e&&e.then)return e.then(function(){})}}();return Promise.resolve(e&&e.then?e.then(function(){}):void 0)}catch(e){return Promise.reject(e)}}).pipe(n.switchMap(function(){return i.bleEvents.didUpdateValueForCharacteristic$}),n.finalize(function(){try{var e=function(){if(c){var e=De(function(){return Promise.resolve(i.BleManager.stopNotification(a,u,h)).then(function(){i.addLog("Stopped notifications for "+o+" characteristic")})},function(e){var t;i.addLog("Attemped to stop notifications for "+o+" characteristic: "+(null!=(t=null==e?void 0:e.message)?t:e))});if(e&&e.then)return e.then(function(){})}}();return Promise.resolve(e&&e.then?e.then(function(){}):void 0)}catch(e){return Promise.reject(e)}}),n.filter(function(e){return e.characteristic===h}),n.map(function(e){return ge(i.type,e.value)}),fe({delimiter:l.BLUETOOTH_CHUNK_DELIMITER}),n.map(function(e){try{return JSON.parse(e)}catch(n){var t;return i.addLog("Failed to parse JSON for "+o+" characteristic. Falling back to unparsed string. "+(null!=(t=null==n?void 0:n.message)?t:n)),e}}))):t.NEVER;var s,a,u,h}))},i.readCharacteristic=function(e,t){void 0===t&&(t=!1);try{var n=this;n.addLog("Reading characteristic: "+e);var r=n.getCharacteristicByName(e),i=r.peripheralId,o=r.serviceUUID,s=r.characteristicUUID;return s?Promise.resolve(De(function(){return Promise.resolve(n.BleManager.read(i,o,s)).then(function(r){var i=ge(n.type,r),o=t?JSON.parse(i):i;return n.addLog("Received read data from "+e+" characteristic: \n"+o),o})},function(t){var n;return Promise.reject("readCharacteristic "+e+" error. "+(null!=(n=null==t?void 0:t.message)?n:t))})):Promise.reject("Did not find characteristic matching "+e)}catch(e){return Promise.reject(e)}},i.writeCharacteristic=function(e,t){try{var n=this;n.addLog("Writing characteristic: "+e);var r=n.getCharacteristicByName(e),i=r.peripheralId,o=r.serviceUUID,s=r.characteristicUUID;if(!s)return Promise.reject("Did not find characteristic matching "+e);var c=ve(n.type,t);return Promise.resolve(n.BleManager.write(i,o,s,c,512)).then(function(){})}catch(e){return Promise.reject(e)}},i._addPendingAction=function(e){var t=this.pendingActions$.getValue();this.pendingActions$.next([].concat(t,[e]))},i._removePendingAction=function(e){var t=this.pendingActions$.getValue();this.pendingActions$.next(t.filter(function(t){return t!==e}))},i._autoToggleActionNotifications=function(r){try{var i=this,o=!1,s=i.connection$.asObservable().pipe(n.switchMap(function(n){return n===e.BLUETOOTH_CONNECTION.CONNECTED?i.pendingActions$:t.NEVER}),n.tap(function(e){try{var t=function(){var e=function(){if(!a&&o){o=!1;var e=De(function(){return Promise.resolve(i.BleManager.stopNotification(r,s,c)).then(function(){i.addLog("Stopped notifications for actions characteristic")})},function(e){var t;i.addLog("Attemped to stop notifications for [actions] characteristic: "+(null!=(t=null==e?void 0:e.message)?t:e))});if(e&&e.then)return e.then(function(){})}}();if(e&&e.then)return e.then(function(){})},n=i.getCharacteristicByName("actions"),r=n.peripheralId,s=n.serviceUUID,c=n.characteristicUUID,a=!!e.length,u=function(){if(a&&!o){o=!0;var e=De(function(){return Promise.resolve(i.BleManager.startNotification(r,s,c)).then(function(){i.addLog("Started notifications for [actions] characteristic")})},function(e){var t;i.addLog("Attemped to start notifications for [actions] characteristic: "+(null!=(t=null==e?void 0:e.message)?t:e))});if(e&&e.then)return e.then(function(){})}}();return Promise.resolve(u&&u.then?u.then(t):t())}catch(e){return Promise.reject(e)}}));return r.pipe(n.switchMap(function(e){return be(e)?s:t.EMPTY})).subscribe(),Promise.resolve()}catch(e){return Promise.reject(e)}},i.dispatchAction=function(e){var r=e.characteristicName,i=e.action;try{var o=this,s=i.responseRequired,c=void 0!==s&&s,a=i.responseTimeout,u=void 0===a?6e4:a;return Promise.resolve(new Promise(function(e,s){try{var a=de(),l=JSON.stringify(P({actionId:a},i));if(o.addLog("Dispatched action with id "+a),c&&u){o._addPendingAction(a);var h=t.timer(u).subscribe(function(){o._removePendingAction(a),s("Action with id "+a+" timed out after "+u+"ms")});o.subscribeToCharacteristic({characteristicName:r,manageNotifications:!1}).pipe(n.filter(function(e){return(null==e?void 0:e.actionId)===a}),n.take(1)).subscribe(function(t){h.unsubscribe(),o._removePendingAction(a),e(t)}),o.writeCharacteristic(r,l).catch(function(e){o._removePendingAction(a),s(e.message)})}else o.writeCharacteristic(r,l).then(function(){e(null)}).catch(function(e){s(e.message)});return Promise.resolve()}catch(e){return Promise.reject(e)}}))}catch(e){return Promise.reject(e)}},r}(),Ee="data",Oe=function(e){return e instanceof Object&&e===Object(e)},Ne=function(e){return"function"==typeof e};function Ae(e){var r,i,o,s,c,a,u;return null!=e&&e.samplingRate||console.warn("Didn't receive a sampling rate, defaulting to 256"),t.pipe(t.pipe(n.mergeMap(function(e){return t.from(e)}),n.map(function(e){return{timestamp:e[0],data:e.slice(2)}})),(i={duration:16,interval:16,samplingRate:null!=(r=null==e?void 0:e.samplingRate)?r:256},o=i.duration,s=i.samplingRate,a=void 0===(c=i.dataProp)?Ee:c,t.pipe(n.bufferCount(i.interval),n.scan(function(e,t){return e.concat(t).slice(e.length<o?0:-o)}),n.filter(function(e){return e.length===o}),function(e){var r=void 0===e?{}:e,i=r.samplingRate,o=void 0===i?256:i,s=r.dataProp,c=void 0===s?Ee:s;return t.pipe(n.map(function(e){var t;return(t={})[c]=function(e,t){return void 0===t&&(t=Ee),e[0][t].map(function(n,r){return e.map(function(e){return e[t][r]})})}(e,c),t.info=P({},e[0]&&e[0].info?e[0].info:{},{startTime:e[0].timestamp,samplingRate:e[0].info&&e[0].info.samplingRate?e[0].info.samplingRate:o}),t}))}({samplingRate:s,dataProp:a}))),(u={channelNames:e.channelNames,samplingRate:e.samplingRate},t.pipe(n.map(function(e){if(!Oe(e)||!Oe(u)&&!Ne(u))return e;var t=Ne(u)?u(e):u;return function(e){return function(t){var n;return P({},e,{info:P({},null!=(n=null==e?void 0:e.info)?n:{},t||{})})}}(e)(t)}))))}var Me=/*#__PURE__*/function(){function r(e){var n=this;this.transport=void 0,this.deviceInfo=void 0,this.selectedDevice$=new t.ReplaySubject(1),this.isAuthenticated$=new t.ReplaySubject(1),this._focus$=void 0,this._calm$=void 0,this._accelerometer$=void 0,this._brainwavesRaw$=void 0,this._brainwavesRawUnfiltered$=void 0,this._brainwavesPSD$=void 0,this._brainwavesPowerByBand$=void 0,this._signalQuality$=void 0,this._status$=void 0,this._settings$=void 0,this._wifiNearbyNetworks$=void 0,this._wifiConnections$=void 0;var r=null!=e?e:{},i=r.transport,o=r.selectedDevice$,s=r.createBluetoothToken;if(!i)throw new Error("No bluetooth transport provided.");this.transport=i,o&&o.subscribe(this.selectedDevice$),this.transport._autoConnect(this.selectedDevice$).subscribe({error:function(e){var t;n.transport.addLog("Auto connect: error -> "+(null!=(t=null==e?void 0:e.message)?t:e))}}),"function"==typeof s?(this.transport.addLog("Auto authentication enabled"),this._autoAuthenticate(s).subscribe()):this.transport.addLog("Auto authentication not enabled"),this.transport._autoToggleActionNotifications(this.selectedDevice$),this._focus$=this._subscribeWhileAuthenticated("focus"),this._calm$=this._subscribeWhileAuthenticated("calm"),this._accelerometer$=this._subscribeWhileAuthenticated("accelerometer"),this._brainwavesRaw$=this._subscribeWhileAuthenticated("raw"),this._brainwavesRawUnfiltered$=this._subscribeWhileAuthenticated("rawUnfiltered"),this._brainwavesPSD$=this._subscribeWhileAuthenticated("psd"),this._brainwavesPowerByBand$=this._subscribeWhileAuthenticated("powerByBand"),this._signalQuality$=this._subscribeWhileAuthenticated("signalQuality"),this._status$=this._subscribeWhileAuthenticated("status"),this._settings$=this._subscribeWhileAuthenticated("settings"),this._wifiNearbyNetworks$=this._subscribeWhileAuthenticated("wifiNearbyNetworks"),this._wifiConnections$=this._subscribeWhileAuthenticated("wifiConnections")}var i=r.prototype;return i._autoAuthenticate=function(r){var i=this,o=t.timer(0,36e5).pipe(n.tap(function(){i.transport.addLog("Auto authentication in progress...")}));return this.selectedDevice$.pipe(n.switchMap(function(s){return be(s)?i.connection().pipe(n.switchMap(function(n){return n===e.BLUETOOTH_CONNECTION.CONNECTED?o:t.EMPTY}),n.switchMap(function(){try{return Promise.resolve(i.isAuthenticated())}catch(e){return Promise.reject(e)}}),n.tap(function(e){var t=e[0];try{var n=function(){if(!t)return Promise.resolve(r()).then(function(e){return Promise.resolve(i.authenticate(e)).then(function(){})});i.transport.addLog("Already authenticated")}();return Promise.resolve(n&&n.then?n.then(function(){}):void 0)}catch(e){return Promise.reject(e)}})):t.EMPTY}))},i.enableAutoConnect=function(e){this.transport.enableAutoConnect(e)},i._hasBluetoothSupport=function(){try{return Promise.resolve(t.firstValueFrom(this.selectedDevice$)).then(be)}catch(e){return Promise.reject(e)}},i.authenticate=function(e){try{var t=this;return Promise.resolve(t._hasBluetoothSupport()).then(function(n){if(!n){var r="authenticate method: The OS version does not support Bluetooth.";return t.transport.addLog(r),Promise.reject(r)}return Promise.resolve(t.transport.writeCharacteristic("auth",e)).then(function(){return Promise.resolve(t.isAuthenticated()).then(function(e){var n=e[0];return t.transport.addLog("Authentication "+(n?"succeeded":"failed")),t.isAuthenticated$.next(n),e})})})}catch(e){return Promise.reject(e)}},i.isAuthenticated=function(){try{var e=this;return Promise.resolve(e.transport.readCharacteristic("auth",!0)).then(function(t){var n=t[0],r=t[1];return e.isAuthenticated$.next(n),[n,r]})}catch(e){return Promise.reject(e)}},i.scan=function(e){if(this.transport instanceof ye)return this.transport.scan(e);if(this.transport instanceof Se)throw new Error("scan method is compatibly with the React Native transport only");throw new Error("unknown transport")},i.connect=function(e){return this.transport instanceof ye?this.transport.connect(e):this.transport instanceof Se?e?this.transport.connect(e):this.transport.connect():void 0},i.disconnect=function(){return this.transport.disconnect()},i.connection=function(){return this.transport.connection()},i.logs=function(){return this.transport.logs$.asObservable()},i.getDeviceId=function(){try{return Promise.resolve(this.transport.readCharacteristic("deviceId"))}catch(e){return Promise.reject(e)}},i._withAuthentication=function(e){try{var n=this;return Promise.resolve(n._hasBluetoothSupport()).then(function(r){if(!r){var i="The OS version does not support Bluetooth.";return n.transport.addLog(i),Promise.reject(i)}return Promise.resolve(t.firstValueFrom(n.isAuthenticated$)).then(function(t){if(!t){var r="Authentication required.";return n.transport.addLog(r),Promise.reject(r)}return Promise.resolve(e())})})}catch(e){return Promise.reject(e)}},i._subscribeWhileAuthenticated=function(e){var r=this;return this.selectedDevice$.pipe(n.switchMap(function(i){return be(i)?r.isAuthenticated$.pipe(n.distinctUntilChanged(),n.switchMap(function(n){return n?r.transport.subscribeToCharacteristic({characteristicName:e}):t.EMPTY})):t.EMPTY}),n.share())},i.focus=function(){return this._focus$},i.calm=function(){return this._calm$},i.accelerometer=function(){return this._accelerometer$},i.brainwaves=function(e){var r=this;switch(e){default:case"raw":return t.defer(function(){return r.getInfo()}).pipe(n.switchMap(function(e){return r._brainwavesRaw$.pipe(Ae(e))}));case"rawUnfiltered":return t.defer(function(){return r.getInfo()}).pipe(n.switchMap(function(e){return r._brainwavesRawUnfiltered$.pipe(Ae(e))}));case"psd":return this._brainwavesPSD$;case"powerByBand":return this._brainwavesPowerByBand$}},i.signalQuality=function(){return this._signalQuality$},i.addMarker=function(e){try{return Promise.resolve(this.dispatchAction({action:"marker",command:"add",message:{timestamp:Date.now(),label:e}})).then(function(){})}catch(e){return Promise.reject(e)}},i.getInfo=function(){try{var e=this;return Promise.resolve(e._withAuthentication(function(){return t.firstValueFrom(e.transport.subscribeToCharacteristic({characteristicName:"deviceInfo"}))}))}catch(e){return Promise.reject(e)}},i.status=function(){return this._status$},i.dispatchAction=function(e){try{var t=this;return Promise.resolve(t._withAuthentication(function(){return t.transport.dispatchAction({characteristicName:"actions",action:e})}))}catch(e){return Promise.reject(e)}},i.settings=function(){return this._settings$},i.haptics=function(e){return this.dispatchAction({action:"haptics",command:"queue",responseRequired:!0,responseTimeout:4e3,message:{effects:e}})},C(r,[{key:"wifi",get:function(){var e=this;return{nearbyNetworks:function(){return e._wifiNearbyNetworks$},connections:function(){return e._wifiConnections$},connect:function(t,n){return t?e.dispatchAction({action:"wifi",command:"connect",responseRequired:!0,responseTimeout:12e4,message:{ssid:t,password:null!=n?n:null}}):Promise.reject("Missing ssid")},forgetConnection:function(t){return t?e.dispatchAction({action:"wifi",command:"forget-connection",responseRequired:!0,responseTimeout:15e3,message:{ssid:t}}):Promise.reject("Missing ssid")},reset:function(){return e.dispatchAction({action:"wifi",command:"reset",responseRequired:!0,responseTimeout:3e4,message:{respondOnSuccess:!0}})},speedTest:function(){return e.dispatchAction({action:"wifi",command:"speed-test",responseRequired:!0,responseTimeout:6e4})}}}}]),r}(),Ie={timesync:!1,autoSelectDevice:!0,streamingMode:x.WIFI_ONLY,emulator:!1,emulatorHost:"localhost",emulatorAuthPort:9099,emulatorDatabasePort:9e3,emulatorFunctionsPort:5001,emulatorFirestorePort:8080,emulatorOptions:{}},Ue=/*#__PURE__*/function(){function r(e){void 0===e&&(e={}),this.options=void 0,this.cloudClient=void 0,this.bluetoothClient=void 0,this.isMissingBluetoothTransport=void 0,this.streamingMode$=new t.ReplaySubject(1);var n=e.streamingMode,r=e.bluetoothTransport;this.options=Object.freeze(P({},Ie,e)),this.cloudClient=new F(this.options),r&&(this.bluetoothClient=new Me({selectedDevice$:this.onDeviceChange(),createBluetoothToken:this.createBluetoothToken.bind(this),transport:r})),this._initStreamingMode(n,!!r)}var i=r.prototype;return i._initStreamingMode=function(e,t){var n=[x.BLUETOOTH_WITH_WIFI_FALLBACK,x.WIFI_WITH_BLUETOOTH_FALLBACK].includes(e),r=!Object.values(x).includes(e),i=n&&!t;this.isMissingBluetoothTransport=i,this.streamingMode$.next(!e||r||i?x.WIFI_ONLY:e)},i.streamingState=function(){var r=this,i=function(e){return[j.ONLINE,j.UPDATING].includes(e)};return this.streamingMode$.pipe(n.switchMap(function(o){return r.isMissingBluetoothTransport?r.cloudClient.status().pipe(n.map(function(e){return{connected:i(e.state),streamingMode:o,activeMode:H.WIFI}})):r.onDeviceChange().pipe(n.switchMap(function(s){return s?t.combineLatest({wifiStatus:r.cloudClient.status(),bluetoothConnection:null!=r&&r.bluetoothClient?r.bluetoothClient.connection():t.of(e.BLUETOOTH_CONNECTION.DISCONNECTED)}).pipe(n.map(function(t){var n=t.wifiStatus,r=t.bluetoothConnection===e.BLUETOOTH_CONNECTION.CONNECTED;switch(o){default:case x.WIFI_ONLY:return{connected:i(n.state),streamingMode:o,activeMode:H.WIFI};case x.WIFI_WITH_BLUETOOTH_FALLBACK:return{connected:i(n.state)||!r?i(n.state):r,streamingMode:o,activeMode:i(n.state)||!r?H.WIFI:H.BLUETOOTH};case x.BLUETOOTH_WITH_WIFI_FALLBACK:return{connected:!!r||i(n.state),streamingMode:o,activeMode:r?H.BLUETOOTH:H.WIFI}}}),n.distinctUntilChanged(function(e,t){return m.default(e,t)})):t.EMPTY}))}))},i._withStreamingModeObservable=function(e){var t=e.wifi,r=e.bluetooth;return this.streamingState().pipe(n.switchMap(function(e){switch(e.activeMode){case H.WIFI:return t();case H.BLUETOOTH:return r();default:return t()}}))},i._withStreamingModePromise=function(e){try{var n=e.wifi,r=e.bluetooth;return Promise.resolve(t.firstValueFrom(this.streamingState())).then(function(e){switch(e.activeMode){case H.WIFI:return Promise.resolve(n());case H.BLUETOOTH:return Promise.resolve(r());default:return Promise.resolve(n())}})}catch(e){return Promise.reject(e)}},i._getCloudMetricDependencies=function(){return{options:this.options,cloudClient:this.cloudClient,onDeviceChange:this.onDeviceChange.bind(this),status:this.status.bind(this)}},i.login=function(e){try{return Promise.resolve(this.cloudClient.login(e))}catch(e){return Promise.reject(e)}},i.logout=function(){try{return Promise.resolve(this.cloudClient.logout())}catch(e){return Promise.reject(e)}},i.__getApp=function(){return this.cloudClient.__getApp()},i.onAuthStateChanged=function(){return this.cloudClient.onAuthStateChanged()},i.addDevice=function(e){var t=ce(this.cloudClient.userClaims,"addDevice");return t[0]?Promise.reject(t[1]):this.cloudClient.addDevice(e)},i.removeDevice=function(e){var t=ce(this.cloudClient.userClaims,"removeDevice");return t[0]?Promise.reject(t[1]):this.cloudClient.removeDevice(e)},i.transferDevice=function(e){var t=ce(this.cloudClient.userClaims,"transferDevice");return t[0]?Promise.reject(t[1]):this.cloudClient.transferDevice(e)},i.onUserDevicesChange=function(){var e=ce(this.cloudClient.userClaims,"onUserDevicesChange"),n=e[1];return e[0]?t.throwError(function(){return n}):this.cloudClient.onUserDevicesChange()},i.onUserClaimsChange=function(){return this.cloudClient.onUserClaimsChange()},i.getDevices=function(){try{return Promise.resolve(this.cloudClient.getDevices())}catch(e){return Promise.reject(e)}},i.selectDevice=function(e){try{var t=ce(this.cloudClient.userClaims,"selectDevice");return t[0]?Promise.reject(t[1]):Promise.resolve(this.cloudClient.selectDevice(e))}catch(e){return Promise.reject(e)}},i.getSelectedDevice=function(){try{var e=ce(this.cloudClient.userClaims,"getSelectedDevice");return e[0]?Promise.reject(e[1]):Promise.resolve(this.cloudClient.getSelectedDevice())}catch(e){return Promise.reject(e)}},i.getInfo=function(){try{var e=this;return Promise.resolve(e.cloudClient.didSelectDevice()).then(function(t){if(!t)return Promise.reject(K);var n=ce(e.cloudClient.userClaims,"getInfo");return n[0]?Promise.reject(n[1]):Promise.resolve(e._withStreamingModePromise({wifi:function(){return e.cloudClient.getInfo()},bluetooth:function(){return e.bluetoothClient.getInfo()}}))})}catch(e){return Promise.reject(e)}},i.onDeviceChange=function(){var e=ce(this.cloudClient.userClaims,"onDeviceChange"),n=e[1];return e[0]?t.throwError(function(){return n}):this.cloudClient.onDeviceChange()},i.disconnect=function(){try{var e=this;return Promise.resolve(e._withStreamingModePromise({wifi:function(){return e.cloudClient.disconnect()},bluetooth:function(){return e.bluetoothClient.disconnect()}}))}catch(e){return Promise.reject(e)}},i.dispatchAction=function(e){try{var t=this;return Promise.resolve(t.cloudClient.didSelectDevice()).then(function(n){if(!n)return Promise.reject(K);var r=function(e,t){var n=null!=e?e:{};if(!n.oauth)return[!1,null];var r=n.scopes.split(","),i=oe[t.command+"/"+t.action];return r.includes(i)?[!1,null]:[!0,ae(i)]}(t.cloudClient.userClaims,e);return r[0]?Promise.reject(r[1]):Promise.resolve(t._withStreamingModePromise({wifi:function(){return t.cloudClient.dispatchAction(e)},bluetooth:function(){return t.bluetoothClient.dispatchAction(e)}}))})}catch(e){return Promise.reject(e)}},i.addMarker=function(e){try{var t=this;return Promise.resolve(t.cloudClient.didSelectDevice()).then(function(n){if(!n)throw K;if(!e)throw new Error(J+"A label is required for addMarker");return Promise.resolve(t._withStreamingModePromise({wifi:function(){return t.cloudClient.dispatchAction({command:"marker",action:"add",message:{label:e,timestamp:t.cloudClient.timestamp}})},bluetooth:function(){return t.bluetoothClient.addMarker(e)}}))})}catch(e){return Promise.reject(e)}},i.haptics=function(e){try{var t=this,n="haptics";return Promise.resolve(t.cloudClient.didSelectDevice()).then(function(r){return r?Promise.resolve(t.getSelectedDevice()).then(function(r){var i=null==r?void 0:r.modelVersion,o=function(e){return ne[e].includes(ee)}(i);if(!o)return Promise.reject(Q(n,i));var s=function(e){var t,n=re[e];return P({},null!=(t=null==n?void 0:n.motorByMotorName)?t:{})}(i);for(var c in e){if(!Object.keys(s).includes(c))return Promise.reject(X(c,i));var a=e[c];if(a.length>7)return Promise.reject(new Error(J+"Maximum items in array is 7"));s[c]=a}var u={command:n,action:"queue",responseRequired:!0,responseTimeout:1e3,message:{effects:s}};return Promise.resolve(t._withStreamingModePromise({wifi:function(){return t.cloudClient.dispatchAction(u)},bluetooth:function(){return t.bluetoothClient.dispatchAction(u)}}))}):Promise.reject(K)})}catch(e){return Promise.reject(e)}},i.getHapticEffects=function(){return ie},i.accelerometer=function(){var e=this,r="accelerometer",i=ce(this.cloudClient.userClaims,r),o=i[1];return i[0]?t.throwError(function(){return o}):this.onDeviceChange().pipe(n.switchMap(function(n){var i=(null==n?void 0:n.modelVersion)||"1",o=function(e){return ne[e].includes(te)}(i);return o?e._withStreamingModeObservable({wifi:function(){return he(e._getCloudMetricDependencies(),{metric:r,labels:Z(r),atomic:!0})},bluetooth:function(){return e.bluetoothClient.accelerometer()}}):t.throwError(function(){return Q(r,i)})}))},i.brainwaves=function(e){var n=this,r=ce(this.cloudClient.userClaims,"brainwaves"),i=r[1];return r[0]?t.throwError(function(){return i}):this._withStreamingModeObservable({wifi:function(){return he(n._getCloudMetricDependencies(),{metric:"brainwaves",labels:e?[e]:[],atomic:!1})},bluetooth:function(){return n.bluetoothClient.brainwaves(e)}})},i.calm=function(){var e=this,n=ce(this.cloudClient.userClaims,"calm"),r=n[1];return n[0]?t.throwError(function(){return r}):this._withStreamingModeObservable({wifi:function(){return he(e._getCloudMetricDependencies(),{metric:"awareness",labels:["calm"],atomic:!1})},bluetooth:function(){return e.bluetoothClient.calm()}})},i.signalQuality=function(){var e=this,n="signalQuality",r=ce(this.cloudClient.userClaims,n),i=r[1];return r[0]?t.throwError(function(){return i}):this._withStreamingModeObservable({wifi:function(){return he(e._getCloudMetricDependencies(),{metric:n,labels:Z(n),atomic:!0})},bluetooth:function(){return e.bluetoothClient.signalQuality()}})},i.settings=function(){var e=ce(this.cloudClient.userClaims,"settings"),n=e[1];return e[0]?t.throwError(function(){return n}):this.cloudClient.observeNamespace("settings")},i.focus=function(){var e=this,n=ce(this.cloudClient.userClaims,"focus"),r=n[1];return n[0]?t.throwError(function(){return r}):this._withStreamingModeObservable({wifi:function(){return he(e._getCloudMetricDependencies(),{metric:"awareness",labels:["focus"],atomic:!1})},bluetooth:function(){return e.bluetoothClient.focus()}})},i.kinesis=function(e){var n="kinesis",r=ce(this.cloudClient.userClaims,n),i=r[1];return r[0]?t.throwError(function(){return i}):he(this._getCloudMetricDependencies(),{metric:n,labels:e?[e]:[],atomic:!1})},i.predictions=function(e){var n="predictions",r=ce(this.cloudClient.userClaims,n),i=r[1];return r[0]?t.throwError(function(){return i}):he(this._getCloudMetricDependencies(),{metric:n,labels:e?[e]:[],atomic:!1})},i.status=function(){var e=this,n=ce(this.cloudClient.userClaims,"status"),r=n[1];return n[0]?t.throwError(function(){return r}):this._withStreamingModeObservable({wifi:function(){return e.cloudClient.status()},bluetooth:function(){return e.bluetoothClient.status()}})},i.changeSettings=function(e){try{var t=this;return Promise.resolve(t.cloudClient.didSelectDevice()).then(function(n){if(!n)return Promise.reject(K);var r=ce(t.cloudClient.userClaims,"changeSettings");return r[0]?Promise.reject(r[1]):Promise.resolve(t.cloudClient.changeSettings(e))})}catch(e){return Promise.reject(e)}},i.goOffline=function(){this.cloudClient.goOffline()},i.goOnline=function(){this.cloudClient.goOnline()},i.createAccount=function(e){return this.cloudClient.createAccount(e)},i.deleteAccount=function(){return this.cloudClient.deleteAccount()},i.createBluetoothToken=function(){return this.cloudClient.createBluetoothToken()},i.createCustomToken=function(){return this.cloudClient.createCustomToken()},i.getTimesyncOffset=function(){return this.options.timesync||console.warn("getTimesyncOffset() requires options.timesync to be true."),this.options.timesync?this.cloudClient.getTimesyncOffset():0},i.createOAuthURL=function(e){return le?function(e,t){var n=e.clientId,r=e.clientSecret,i=e.responseType,o=e.redirectUri,s=e.scope,c=e.state,a=ue(t);return g.default.get(a+"/authorize/entry",{params:P({client_id:n},r?{client_secret:r}:{},{response_type:i,redirect_uri:o,scope:s.join(","),state:c,redirect:"false"})}).then(function(e){return""+a+e.data.url})}(e,this.options):Promise.reject(new Error(J+"the createOAuthURL method must be used on the server side (node.js) for security reasons."))},i.getOAuthToken=function(e){return le?function(e,t){try{var n=ue(t);return Promise.resolve(g.default.post(n+"/getOAuthRefreshToken",e)).then(function(t){return g.default.post(n+"/token",{grant_type:"refresh_token",refresh_token:t.data.data,client_id:e.clientId,client_secret:e.clientSecret}).then(function(e){return JSON.parse(e.data).access_token})})}catch(e){return Promise.reject(e)}}(e,this.options):Promise.reject(new Error(J+"the getOAuthToken method must be used on the server side (node.js) for security reasons."))},i.removeOAuthAccess=function(){return this.cloudClient.removeOAuthAccess()},i.onUserExperiments=function(){return this.cloudClient.onUserExperiments()},i.deleteUserExperiment=function(e){return this.cloudClient.deleteUserExperiment(e)},C(r,[{key:"bluetooth",get:function(){return null==this?void 0:this.bluetoothClient}},{key:"training",get:function(){var e=this,t=this,n=this;return{record:function(t){try{return Promise.resolve(e.cloudClient.didSelectDevice()).then(function(n){if(!n)throw K;var r=P({fit:!1,baseline:!1,timestamp:e.cloudClient.timestamp},t,{userId:e.cloudClient.user&&"uid"in e.cloudClient.user?e.cloudClient.user.uid:null});return Promise.resolve(e.cloudClient.actions.dispatch({command:"training",action:"record",message:r})).then(function(){})})}catch(e){return Promise.reject(e)}},stop:function(e){try{return Promise.resolve(t.cloudClient.didSelectDevice()).then(function(n){if(!n)throw K;return Promise.resolve(t.cloudClient.actions.dispatch({command:"training",action:"stop",message:P({},e)})).then(function(){})})}catch(e){return Promise.reject(e)}},stopAll:function(){try{return Promise.resolve(n.cloudClient.didSelectDevice()).then(function(e){if(!e)throw K;return Promise.resolve(n.cloudClient.actions.dispatch({command:"training",action:"stopAll",message:{}})).then(function(){})})}catch(e){return Promise.reject(e)}}}}}]),r}();Ue.credentialWithLink=N,Ue.createUser=function(){return D(p.default.User,[].slice.call(arguments))},Ue.SERVER_TIMESTAMP=y;var Re=/*#__PURE__*/function(e){var t,n;function r(t){var n;return void 0===t&&(t={}),n=e.call(this,t)||this,console.log("The Notion class is deprecated and will be removed in the next version of the SDK. Please use the Neurosity class instead. e.g. new Notion() => new Neurosity()"),n}return n=e,(t=r).prototype=Object.create(n.prototype),t.prototype.constructor=t,S(t,n),r}(Ue);e.BluetoothClient=Me,e.Neurosity=Ue,e.Notion=Re,e.ReactNativeTransport=ye,e.WebBluetoothTransport=Se,e.osHasBluetoothSupport=be});
|
|
2
|
+
//# sourceMappingURL=index.umd.js.map
|