@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
|
File without changes
|
package/dist/index.m.js
ADDED
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
import{Observable as e,EMPTY as t,fromEventPattern as n,from as r,pipe as i,of as o,range as c,timer as s,combineLatest as a,ReplaySubject as u,firstValueFrom as l,throwError as h,merge as d,NEVER as f,defer as m,BehaviorSubject as v}from"rxjs";import{switchMap as p,map as g,withLatestFrom as _,mergeMap as b,filter as P,take as C,concatWith as S,bufferCount as D,concatMap as w,distinctUntilChanged as y,startWith as A,share as j,shareReplay as k,scan as T,tap as N,distinct as M,takeUntil as E,finalize as I}from"rxjs/operators";import O from"fast-deep-equal";import U from"firebase/app";import"firebase/database";import"firebase/auth";import"firebase/functions";import"firebase/firestore";import L from"outliers";import{metrics as R,BLUETOOTH_CHARACTERISTICS as $,BLUETOOTH_DEVICE_NAME_PREFIXES as B,BLUETOOTH_COMPANY_IDENTIFIER_HEX as x,BLUETOOTH_PRIMARY_SERVICE_UUID_HEX as F,BLUETOOTH_CHUNK_DELIMITER as W,BLUETOOTH_PRIMARY_SERVICE_UUID_STRING as H}from"@neurosity/ipk";import z from"axios";import q from"semver/functions/gte";function V(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 G(e,t,n){return t&&V(e.prototype,t),n&&V(e,n),Object.defineProperty(e,"prototype",{writable:!1}),e}function J(){return J=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},J.apply(this,arguments)}function K(e,t){return K=Object.setPrototypeOf?Object.setPrototypeOf.bind():function(e,t){return e.__proto__=t,e},K(e,t)}function Q(){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 Y(e,t,n){return Y=Q()?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&&K(i,n.prototype),i},Y.apply(null,arguments)}var Z={apiKey:"AIzaSyB0TkZ83Fj0CIzn8AAmE-Osc92s3ER8hy8",authDomain:"neurosity-device.firebaseapp.com",databaseURL:"https://neurosity-device.firebaseio.com",projectId:"neurosity-device",storageBucket:"neurosity-device.appspot.com",messagingSenderId:"212595049674"},X=U.database.ServerValue.TIMESTAMP,ee=/*#__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=U.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===Z.databaseURL});if(r)return r;if(e){var i=e;return t.find(function(e){return e.name===i})||U.initializeApp(Z,i)}return U.initializeApp(Z)},t.connectEmulators=function(e){var t=e.emulatorHost,n=e.emulatorAuthPort,r=e.emulatorDatabasePort,i=e.emulatorFunctionsPort,o=e.emulatorFirestorePort,c=e.emulatorOptions;this.app.auth().useEmulator("http://"+t+":"+n),this.app.database().useEmulator(t,r,c),this.app.functions().useEmulator(t,i),this.app.firestore().useEmulator(t,o,c)},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}(),te=U.database.ServerValue.TIMESTAMP,ne=U.auth.EmailAuthProvider.credentialWithLink,re=/*#__PURE__*/function(){function i(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 o=i.prototype;return o.auth=function(){return this.app.auth()},o.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)}},o.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 c(e){return r?e:t.delete()}if(i)return Promise.reject(i);var s=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 s&&s.then?s.then(c):c(s)}):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)}},o.onAuthStateChanged=function(){var t=this;return new e(function(e){try{t.app.auth().onAuthStateChanged(function(t){e.next(t)},function(t){e.error(t)})}catch(t){e.error(t)}})},o.onLogin=function(){var t=this;return new e(function(e){var n=t.app.auth().onAuthStateChanged(function(t){t&&(e.next(t),e.complete())});return function(){return n()}})},o.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 U.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")},o.logout=function(){return this.app.auth().signOut()},o.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)}},o.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)}},o.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)}},o.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),c=n.getUserClaimedDevicePath(e);return Promise.resolve(n.app.database().ref().update((i={},i[o]=r,i[c]={claimedOn:te},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)}},o.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),c=n.app.database().ref(i);return Promise.resolve(Promise.all([o.remove(),c.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)}},o.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)}},o.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)}},o.onUserDevicesChange=function(){var e=this;return this.onAuthStateChanged().pipe(p(function(i){if(!i)return t;var o=e.getUserDevicesPath(),c=e.app.database().ref(o);return n(function(e){return c.on("value",e)},function(e){return c.off("value",e)}).pipe(g(function(e){return e[0].val()}),p(function(t){return r(e.userDevicesToDeviceInfoList(t))}))}))},o.onUserClaimsChange=function(){var e=this;return this.onAuthStateChanged().pipe(p(function(i){if(!i)return t;var o=e.getUserClaimsUpdatedOnPath(),c=e.app.database().ref(o);return n(function(e){return c.on("value",e)},function(e){return c.off("value",e)}).pipe(g(function(e){return e[0].val()}),p(function(){return r(e.getIdToken(!0)).pipe(p(function(){return r(e.getClaims())}))}))}))},o.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)}},o.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")},o.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)}},o.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)}},o.getDeviceClaimedByPath=function(e){return"devices/"+e+"/status/claimedBy"},o.getUserClaimedDevicePath=function(e){return"users/"+this.user.uid+"/devices/"+e},o.getUserDevicesPath=function(){return"users/"+this.user.uid+"/devices"},o.getUserClaimsUpdatedOnPath=function(){return"users/"+this.user.uid+"/claimsUpdatedOn"},o.getDeviceInfoPath=function(e){return"devices/"+e+"/info"},o.onUserExperiments=function(){var e=this;return this.onAuthStateChanged().pipe(p(function(r){if(!r)return t;var i=e.user.uid,o=e.app.database().ref("experiments").orderByChild("userId").equalTo(i).limitToFirst(100);return n(function(e){return o.on("value",e)},function(e){return o.off("value",e)}).pipe(g(function(e){return e[0].val()}),g(function(e){return Object.entries(null!=e?e:{}).map(function(e){var t,n=e[1];return J({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()})}))}))},o.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)}},i}(),ie=U.database.ServerValue.TIMESTAMP,oe=U.database.ServerValue.TIMESTAMP,ce=/*#__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),c=[],s=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 c.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(ie),a("subscriptions",n.get()).then(function(){n.toList().forEach(function(e){r.child("subscriptions/"+e.id).onDisconnect().remove()})})})});return c.push(function(){e.database().ref(".info/connected").off("value",h)}),{set:s,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)}),c=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([c,o])}return n})}catch(e){return Promise.reject(e)}var t},nextMetric:function(e,t){try{return s("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=J({id:t,clientId:i},e);return s(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(),c.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(J({},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()},G(e,[{key:"timestamp",get:function(){return oe}}]),e}();function se(e){var n=e.allowWhileOnSleepMode;return i(_(e.status$),b(function(e){var r=e[0];return function(e,t){return!("online"!==e.state||!t&&e.sleepMode)}(e[1],n)?o(r):t}))}ce.serverType="firebase";var ae,ue,le={bufferSize:100,updateInterval:6e4},he=/*#__PURE__*/function(){function e(e){this.options=void 0,this._offset=0,this.options=J({},le,e),this.start()}var t=e.prototype;return t.start=function(){var e=this,t=this.options,n=t.bufferSize,r=t.updateInterval,i=t.status$,o=c(0,n),a=s(r,r).pipe(g(function(e){return n+e}),se({status$:i,allowWhileOnSleepMode:!0}));i.pipe(P(function(e){return"online"===e.state}),C(1)).pipe(p(function(){return o.pipe(S(a),e.toOffset(),D(n,1),e.filterOutliers(),g(function(t){return e.average(t)}))})).subscribe(function(t){e._offset=t})},t.filterOutliers=function(){return i(g(function(e){return e.filter(L())}))},t.toOffset=function(){var e=this.options.getTimesync;return i(w(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)}}))},t.average=function(e){return Math.round(e.reduce(function(e,t){return e+t})/e.length)},G(e,[{key:"offset",get:function(){return this._offset}},{key:"timestamp",get:function(){return Date.now()+this._offset}}]),e}(),de=/*#__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"}(ae||(ae={})),function(e){e.UPDATING="updating",e.CHARGING="charging"}(ue||(ue={}));var fe,me,ve=/*#__PURE__*/function(){function e(e){var t,n,r,o=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 u(1),this.options=e,this.subscriptionManager=new de,this.firebaseApp=new ee(e),this.firebaseUser=new re(this.firebaseApp),this._selectedDevice.next(void 0),this.status$=(t=this.observeNamespace("status").pipe(j()),n=t.pipe(g(function(e){return e.lastHeartbeat}),y(),g(function(){return Date.now()})),r=n.pipe(p(function(){return s(75e3)}),g(function(){return null}),A(null)),a({status:t,lostHeartbeat:r}).pipe(_(n),g(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?J({},t,{state:ae.OFFLINE}):t}),y(function(e,t){return O(e,t)}))).pipe(i(g(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})),k(1)),this.firebaseUser.onAuthStateChanged().subscribe(function(e){o.user=e}),this.firebaseUser.onUserClaimsChange().subscribe(function(e){o.userClaims=e}),this.onDeviceChange().subscribe(function(e){o.firebaseDevice&&o.firebaseDevice.disconnect(),e&&(o.firebaseDevice=new ce({deviceId:e.deviceId,firebaseApp:o.firebaseApp,dependencies:{subscriptionManager:o.subscriptionManager}}),o.options.timesync&&(o.timesync=new he({status$:o.status(),getTimesync:o.firebaseDevice.getTimesync.bind(o.firebaseDevice)})))})}var r=e.prototype;return r.onDeviceChange=function(){return this._selectedDevice.asObservable().pipe(P(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 J({},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(p(function(t){try{return t?Promise.resolve(e.didSelectDevice()?e.getSelectedDevice():e.setAutoSelectedDevice()).then(function(e){return J({},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(l(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(p(function(i){return i?n(function(t){return r.firebaseDevice.onNamespace(e,t)},function(t){return r.firebaseDevice.offNamespace(e,t)}):t}))},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},G(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"}(fe||(fe={})),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"}(me||(me={}));var pe,ge,_e,be,Pe,Ce,Se="Neurosity SDK: ",De=new Error(Se+'A device must be selected. Make sure to call "neurosity.selectDevice()"'),we=function(e,t){return new Error(""+Se+e+" not supported on model version "+t+". See docs.neurosity.co for more info.")},ye=function(e,t){return new Error(""+Se+e+" location not supported on model version "+t+". Check spelling or see docs.neurosity.co for more info.")},Ae=function(e){return Object.keys(R[e])},je="haptics",ke="accel",Te=((pe={})[1]=[],pe[2]=[je,ke],pe[3]=[je,ke],pe),Ne=((be={})[1]={},be[2]={motorByMotorName:(ge={},ge.P7=[],ge.P8=[],ge)},be[3]={motorByMotorName:(_e={},_e.P7=[],_e.P8=[],_e)},be),Me={__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"},Ee={"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"},Ie={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 Oe(e,t){var n=null!=e?e:{};if(!n.oauth)return[!1,null];var r=n.scopes.split(","),i=Ie[t];return r.includes(i)?[!1,null]:[!0,Ue(i)]}function Ue(){return new Error(Se+"You are trying to access data with an OAuth token without access to the following scopes: "+[].slice.call(arguments).join(", ")+".")}function Le(e){return e.emulator?"http://"+e.emulatorHost+":"+e.emulatorFunctionsPort+"/neurosity-device/us-central1":"https://us-central1-neurosity-device.cloudfunctions.net"}function Re(){return"undefined"!=typeof process&&null!=process.versions&&null!=process.versions.node}function $e(n,r){var i=n.cloudClient,o=n.onDeviceChange,c=n.status,s=r.metric,a=r.labels,u=r.atomic,l=function(e,t,n){var r=Ae(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(Se+"No permission to access the "+e+" metric. To access this metric, edit the skill's permissions"):!!function(e,t){var n=Ae(e);return!t.every(function(e){return n.includes(e)})}(e,t)&&new Error(Se+"One ore more labels provided to "+e+" are invalid. The valid labels for "+e+" are "+r):new Error(Se+"At least one label is required for "+e+" metric. Please add one of the following labels: "+r)}(s,a,n.options);if(l)return h(function(){return l});var d=new e(function(e){var t=(u?[i.metrics.subscribe({metric:s,labels:a,atomic:u})]:a.map(function(e){return i.metrics.subscribe({metric:s,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(p(function(e){return e?d.pipe(se({status$:c(),allowWhileOnSleepMode:!1})):t}))}function Be(){return Math.floor(1e5+9e5*Math.random())}function xe(e){var t=e.delimiter;return i(T(function(e,n){var r=e[0]+n;if(!r.includes(t))return[r,""];if(r.endsWith(t))return["",r];var i=r.lastIndexOf(t)+t.length,o=r.slice(0,i);return[r.slice(i),o]},["",""]),g(function(e){return e[1].slice(0,-t.length)}),P(function(e){return!!e.length}))}!function(e){e.SCANNING="scanning",e.CONNECTED="connected",e.CONNECTING="connecting",e.DISCONNECTING="disconnecting",e.DISCONNECTED="disconnected"}(Pe||(Pe={})),function(e){e.WEB="web",e.REACT_NATIVE="reactNative"}(Ce||(Ce={}));var Fe=new TextEncoder,We=new TextDecoder("utf-8");function He(e,t){return e===Ce.REACT_NATIVE?[].concat(Fe.encode(t)):Fe.encode(t)}function ze(e,t){return We.decode(e===Ce.REACT_NATIVE?new Uint8Array(t):t)}var qe=Object.fromEntries(Object.entries($).map(function(e){return e.reverse()}));function Ve(e){return!!e&&Number(e.modelVersion)>=3&&!(null!=e&&e.emulator)&&q(e.osVersion,"16.0.0")}function Ge(e,t){try{var n=e()}catch(e){return t(e)}return n&&n.then?n.then(void 0,t):n}var Je={autoConnect:!0},Ke=/*#__PURE__*/function(){function n(e){var t,n,r=this;if(void 0===e&&(e={}),this.type=Ce.WEB,this.options=void 0,this.device=void 0,this.server=void 0,this.service=void 0,this.characteristicsByName={},this.connection$=new v(Pe.DISCONNECTED),this.pendingActions$=new v([]),this.logs$=new u(10),this.onDisconnected$=this._onDisconnected().pipe(j()),this.connectionStream$=this.connection$.asObservable().pipe(P(function(e){return!!e}),y(),k(1)),this._isAutoConnectEnabled$=new u(1),this.options=J({},Je,e),"undefined"==typeof window||!(null==(t=window)||null==(n=t.navigator)?void 0:n.bluetooth)){var i="Web Bluetooth is not supported";throw this.addLog(i),new Error(i)}this._isAutoConnectEnabled$.subscribe(function(e){r.addLog("Auto connect: "+(e?"enabled":"disabled"))}),this._isAutoConnectEnabled$.next(this.options.autoConnect),this.connection$.asObservable().subscribe(function(e){r.addLog("connection status is "+e)}),this.onDisconnected$.subscribe(function(){r.connection$.next(Pe.DISCONNECTED)})}var r=n.prototype;return r._getPairedDevices=function(){try{return Promise.resolve(navigator.bluetooth.getDevices())}catch(e){return Promise.reject(e)}},r._autoConnect=function(n){var r=this,i=this,c=this;return this._isAutoConnectEnabled$.pipe(p(function(e){return e?d(n,c.onDisconnected$.pipe(p(function(){return n}))):f}),p(function(e){return Ve(e)?o(e):t}),p(function(e){try{var t=e.deviceNickname;return r.isConnected()?(r.addLog("Auto connect: "+t+" is already connected. Skipping auto connect."),Promise.resolve()):Promise.resolve(r._getPairedDevices().then(function(e){return[null,e]}).catch(function(e){return[e,null]})).then(function(e){var n,i=e[0],o=e[1];if(i)throw new Error("failed to get devices: "+(null!=(n=null==i?void 0:i.message)?n:i));r.addLog("Auto connect: found "+o.length+" devices "+o.map(function(e){return e.name}).join(", "));var c=o.findLast(function(e){return e.name===t});if(!c)throw new Error("couldn't find selected device in the list of paired devices.");return r.addLog("Auto connect: "+t+" was detected and previously paired"),c})}catch(e){return Promise.reject(e)}}),N(function(){c.connection$.next(Pe.SCANNING)}),p(function(t){return function(t){return new e(function(e){var n=new AbortController,r=n.signal,i=t.addEventListener("advertisementreceived",function(t){n.abort(),e.next(t),e.complete()},{once:!0});try{t.watchAdvertisements({signal:r})}catch(t){e.error(t)}return function(){n.abort(),t.removeEventListener("advertisementreceived",i)}})}(t)}),p(function(e){try{return i.addLog("Advertisement received for "+e.device.name),Promise.resolve(i.getServerServiceAndCharacteristics(e.device))}catch(e){return Promise.reject(e)}}))},r.enableAutoConnect=function(e){this._isAutoConnectEnabled$.next(e)},r.addLog=function(e){this.logs$.next(e)},r.isConnected=function(){return this.connection$.getValue()===Pe.CONNECTED},r.connection=function(){return this.connectionStream$},r.connect=function(e){try{var t=this;return Promise.resolve(Ge(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)}},r.requestDevice=function(e){try{var t=this;return Promise.resolve(Ge(function(){t.addLog("Requesting Bluetooth Device...");var n=B.map(function(e){return{namePrefix:e}});return Promise.resolve(window.navigator.bluetooth.requestDevice({filters:[].concat(e?[{name:e}]:n,[{manufacturerData:[{companyIdentifier:x}]}]),optionalServices:[F]}))},function(e){return Promise.reject(e)}))}catch(e){return Promise.reject(e)}},r.getServerServiceAndCharacteristics=function(e){try{var t=this;return Promise.resolve(Ge(function(){return t.device=e,t.connection$.getValue()===Pe.CONNECTING||t.connection$.next(Pe.CONNECTING),Promise.resolve(e.gatt.connect()).then(function(e){return t.server=e,t.addLog("Getting service..."),Promise.resolve(t.server.getPrimaryService(F)).then(function(e){return t.service=e,t.addLog("Got service "+t.service.uuid+", getting characteristics..."),Promise.resolve(t.service.getCharacteristics()).then(function(e){t.addLog("Got characteristics"),t.characteristicsByName=Object.fromEntries(e.map(function(e){return[qe[e.uuid],e]})),t.connection$.next(Pe.CONNECTED)})})})},function(e){return Promise.reject(e)}))}catch(e){return Promise.reject(e)}},r._onDisconnected=function(){var e=this;return this.connection$.asObservable().pipe(p(function(t){return t===Pe.CONNECTED?Qe(e.device,"gattserverdisconnected"):f}))},r.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)}},r.getCharacteristicByName=function(e){try{var t;return Promise.resolve(null==(t=this.characteristicsByName)?void 0:t[e])}catch(e){return Promise.reject(e)}},r.subscribeToCharacteristic=function(e){var t=this,n=this,r=e.characteristicName,i=e.manageNotifications,o=void 0===i||i,c=m(function(){return n.getCharacteristicByName(r)}).pipe(p(function(e){try{var n=function(){if(t.isConnected()&&o){var n=Ge(function(){return Promise.resolve(e.startNotifications()).then(function(){t.addLog("Started notifications for "+r+" characteristic")})},function(e){var n;t.addLog("Attemped to stop notifications for "+r+" characteristic: "+(null!=(n=null==e?void 0:e.message)?n:e))});if(n&&n.then)return n.then(function(){})}}();return Promise.resolve(n&&n.then?n.then(function(){return e}):e)}catch(e){return Promise.reject(e)}}),p(function(e){return Qe(e,"characteristicvaluechanged",function(){try{var t=function(){if(n.isConnected()&&o){var t=Ge(function(){return Promise.resolve(e.stopNotifications()).then(function(){n.addLog("Stopped notifications for "+r+" characteristic")})},function(e){var t;n.addLog("Attemped to stop notifications for "+r+" 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)}})}),g(function(e){var t=e.target.value,i=ze(n.type,t);return n.addLog("Received chunk with buffer size of "+t.byteLength+" and decoded size "+i.length+" for "+r+" characteristic: \n"+i),i}),xe({delimiter:W}),g(function(e){try{return JSON.parse(e)}catch(i){var t;return n.addLog("Failed to parse JSON for "+r+" characteristic. Falling back to unparsed string. "+(null!=(t=null==i?void 0:i.message)?t:i)),e}}));return this.connection$.pipe(p(function(e){return e===Pe.CONNECTED?c:f}))},r.readCharacteristic=function(e,t){void 0===t&&(t=!1);try{var n=this;return Promise.resolve(Ge(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=ze(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)}},r.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=He(n.type,t);return Promise.resolve(r.writeValueWithResponse(i)).then(function(){})})}catch(e){return Promise.reject(e)}},r._addPendingAction=function(e){var t=this.pendingActions$.getValue();this.pendingActions$.next([].concat(t,[e]))},r._removePendingAction=function(e){var t=this.pendingActions$.getValue();this.pendingActions$.next(t.filter(function(t){return t!==e}))},r._autoToggleActionNotifications=function(e){try{var n,r=this,i=!1,o=r.connection$.asObservable().pipe(p(function(e){return e===Pe.CONNECTED?m(function(){return r.getCharacteristicByName("actions")}).pipe(p(function(e){return n=e,r.pendingActions$})):f}),N(function(e){try{var t=function(){var e=function(){if(!o&&i){i=!1;var e=Ge(function(){return Promise.resolve(n.stopNotifications()).then(function(){r.addLog("Stopped notifications for actions characteristic")})},function(e){var t;r.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(){})},o=!!e.length,c=function(){if(o&&!i){i=!0;var e=Ge(function(){return Promise.resolve(n.startNotifications()).then(function(){r.addLog("Started notifications for [actions] characteristic")})},function(e){var t;r.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(c&&c.then?c.then(t):t())}catch(e){return Promise.reject(e)}}));return e.pipe(p(function(e){return Ve(e)?o:t})).subscribe(),Promise.resolve()}catch(e){return Promise.reject(e)}},r.dispatchAction=function(e){var t=e.characteristicName,n=e.action;try{var r=this,i=n.responseRequired,o=void 0!==i&&i,c=n.responseTimeout,a=void 0===c?6e4:c;return Promise.resolve(new Promise(function(e,i){try{return Promise.resolve(r.getCharacteristicByName(t).catch(function(){i("Did not find characteristic by the name: "+t)})).then(function(c){if(c){var u=Be(),l=JSON.stringify(J({actionId:u},n));if(r.addLog("Dispatched action with id "+u),o&&a){r._addPendingAction(u);var h=s(a).subscribe(function(){r._removePendingAction(u),i("Action with id "+u+" timed out after "+a+"ms")});r.subscribeToCharacteristic({characteristicName:t,manageNotifications:!1}).pipe(P(function(e){return(null==e?void 0:e.actionId)===u}),C(1)).subscribe(function(t){h.unsubscribe(),r._removePendingAction(u),e(t)}),r.writeCharacteristic(t,l).catch(function(e){r._removePendingAction(u),i(e.message)})}else r.writeCharacteristic(t,l).then(function(){e(null)}).catch(function(e){i(e.message)})}})}catch(e){return Promise.reject(e)}}))}catch(e){return Promise.reject(e)}},n}();function Qe(e,t,r){return n(function(n){e.addEventListener(t,n)},function(n){try{var i=function(){e.removeEventListener(t,n)},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 Ye(e,t){try{var n=e()}catch(e){return t(e)}return n&&n.then?n.then(void 0,t):n}var Ze={autoConnect:!0},Xe=/*#__PURE__*/function(){function r(e){var t=this;if(this.type=Ce.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 v(Pe.DISCONNECTED),this.pendingActions$=new v([]),this.logs$=new u(10),this.onDisconnected$=void 0,this.connectionStream$=this.connection$.asObservable().pipe(P(function(e){return!!e}),y(),k(1)),this._isAutoConnectEnabled$=new u(1),!e){var n="React Native transport: missing options.";throw this.addLog(n),new Error(n)}this.options=J({},Ze,e);var r=this.options,i=r.BleManager,o=r.bleManagerEmitter,c=r.platform,s=r.autoConnect;if(!i){var a="React Native option: BleManager not provided.";throw this.addLog(a),new Error(a)}if(!o){var l="React Native option: bleManagerEmitter not provided.";throw this.addLog(l),new Error(l)}if(!c){var h="React Native option: platform not provided.";throw this.addLog(h),new Error(h)}this.BleManager=i,this.bleManagerEmitter=o,this.platform=c,this._isAutoConnectEnabled$.next(s),this._isAutoConnectEnabled$.subscribe(function(e){t.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(j()),this.BleManager.start({showAlert:!1}).then(function(){t.addLog("BleManger started")}).catch(function(e){var n;t.addLog("BleManger failed to start. "+(null!=(n=null==e?void 0:e.message)?n:e))}),this.connection$.asObservable().subscribe(function(e){t.addLog("connection status is "+e)}),this.onDisconnected$.subscribe(function(){t.connection$.next(Pe.DISCONNECTED)})}var i=r.prototype;return i.addLog=function(e){this.logs$.next(e)},i.isConnected=function(){return this.connection$.getValue()===Pe.CONNECTED},i._autoConnect=function(e){var t=this,n=this,r=this.onDisconnected$.pipe(p(function(){return e}));return this._isAutoConnectEnabled$.pipe(p(function(t){return t?d(e,r):f}),p(function(e){return Ve(e)?n.scan().pipe(p(function(t){var n=t.find(function(t){return t.name===(null==e?void 0:e.deviceNickname)});return n?o(n):f}),M(function(e){return e.id}),C(1)):f}),p(function(e){try{return Promise.resolve(t.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 t=this;return n(function(n){t.bleManagerEmitter.addListener(e,n)},function(){t.bleManagerEmitter.removeAllListeners(e)}).pipe(j())},i.scan=function(t){var n,r,i=this,o=null!=(n=null==t?void 0:t.seconds)?n:10,c=null!=(r=null==t?void 0:t.once)&&r,a=[H],u={},l=new e(function(e){try{i.BleManager.scan(a,o,!0,u).then(function(){i.addLog("BleManger scanning "+(c?"once":"indefintely")),e.next()})}catch(n){var t;i.addLog("BleManger scanning "+(c?"once":"indefintely")+" failed. "+(null!=(t=null==n?void 0:n.message)?t:n)),e.error(n)}return function(){i.BleManager.stopScan()}}),h=(c?l:s(0,1e4).pipe(p(function(){return l}))).pipe(N(function(){i.connection$.next(Pe.SCANNING)}),E(this.onDisconnected$),p(function(){return i.bleEvents.discoverPeripheral$}),P(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!==B.findIndex(function(e){return i.startsWith(e)});return o}),T(function(e,t){var n,r,o,c,s,a,u,l,h=null!=(n=null!=(r=null==t||null==(o=t.advertising)?void 0:o.localName)?r:t.name)?n:"",d=null==(c=ze(i.type,null!=(s=null==t||null==(a=t.advertising)||null==(u=a.manufacturerData)?void 0:u.bytes)?s:[]))||null==c.slice?void 0:c.slice(2);return J({},e,((l={})[t.id]=J({},t,{name:h,manufactureDataString:d}),l))},{}),y(function(e,t){return JSON.stringify(e)===JSON.stringify(t)}),g(function(e){return Object.values(e)}),j());return h},i.connect=function(e){try{var t=this;return Promise.resolve(new Promise(function(n,r){try{return Promise.resolve(Ye(function(){if(e)return t.connection$.next(Pe.CONNECTING),Promise.resolve(t.BleManager.connect(e.id)).then(function(){return t.addLog("Getting service..."),Promise.resolve(t.BleManager.retrieveServices(e.id,[H])).then(function(i){function o(){t.addLog("Successfully connected to peripheral "+e.id),t.connection$.next(Pe.CONNECTED),n()}if(!i)return t.addLog("Could not retreive services"),void r("Could not retreive services");t.addLog("Got service "+H+", getting characteristics..."),t.device=e,t.characteristicsByName=Object.fromEntries(i.characteristics.map(function(t){return[qe[t.characteristic.toLowerCase()],{characteristicUUID:t.characteristic,serviceUUID:t.service,peripheralId:e.id}]})),t.addLog("Got characteristics.");var c=function(){if("android"===t.platform)return t.addLog("Setting Android MTU to 512"),Promise.resolve(t.BleManager.requestMTU(e.id,512)).then(function(){})}();return c&&c.then?c.then(o):o()})});t.addLog("Peripheral not found")},function(e){r(e)}))}catch(e){return Promise.reject(e)}}))}catch(e){return Promise.reject(e)}},i.disconnect=function(){try{var e=this;return Promise.resolve(Ye(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(e){var t=this,n=e.characteristicName,r=e.manageNotifications,i=void 0===r||r;return this.connection$.pipe(p(function(e){return e===Pe.CONNECTED?(r=t.getCharacteristicByName(n),o=r.peripheralId,c=r.serviceUUID,s=r.characteristicUUID,m(function(){try{var e=function(){if(i){var e=Ye(function(){return Promise.resolve(t.BleManager.startNotification(o,c,s)).then(function(){t.addLog("Started notifications for "+n+" characteristic")})},function(e){var r;t.addLog("Attemped to stop notifications for "+n+" characteristic: "+(null!=(r=null==e?void 0:e.message)?r: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(p(function(){return t.bleEvents.didUpdateValueForCharacteristic$}),I(function(){try{var e=function(){if(i){var e=Ye(function(){return Promise.resolve(t.BleManager.stopNotification(o,c,s)).then(function(){t.addLog("Stopped notifications for "+n+" characteristic")})},function(e){var r;t.addLog("Attemped to stop notifications for "+n+" characteristic: "+(null!=(r=null==e?void 0:e.message)?r: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)}}),P(function(e){return e.characteristic===s}),g(function(e){return ze(t.type,e.value)}),xe({delimiter:W}),g(function(e){try{return JSON.parse(e)}catch(i){var r;return t.addLog("Failed to parse JSON for "+n+" characteristic. Falling back to unparsed string. "+(null!=(r=null==i?void 0:i.message)?r:i)),e}}))):f;var r,o,c,s}))},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,c=r.characteristicUUID;return c?Promise.resolve(Ye(function(){return Promise.resolve(n.BleManager.read(i,o,c)).then(function(r){var i=ze(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,c=r.characteristicUUID;if(!c)return Promise.reject("Did not find characteristic matching "+e);var s=He(n.type,t);return Promise.resolve(n.BleManager.write(i,o,c,s,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(e){try{var n=this,r=!1,i=n.connection$.asObservable().pipe(p(function(e){return e===Pe.CONNECTED?n.pendingActions$:f}),N(function(e){try{var t=function(){var e=function(){if(!a&&r){r=!1;var e=Ye(function(){return Promise.resolve(n.BleManager.stopNotification(o,c,s)).then(function(){n.addLog("Stopped notifications for actions characteristic")})},function(e){var t;n.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(){})},i=n.getCharacteristicByName("actions"),o=i.peripheralId,c=i.serviceUUID,s=i.characteristicUUID,a=!!e.length,u=function(){if(a&&!r){r=!0;var e=Ye(function(){return Promise.resolve(n.BleManager.startNotification(o,c,s)).then(function(){n.addLog("Started notifications for [actions] characteristic")})},function(e){var t;n.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 e.pipe(p(function(e){return Ve(e)?i:t})).subscribe(),Promise.resolve()}catch(e){return Promise.reject(e)}},i.dispatchAction=function(e){var t=e.characteristicName,n=e.action;try{var r=this,i=n.responseRequired,o=void 0!==i&&i,c=n.responseTimeout,a=void 0===c?6e4:c;return Promise.resolve(new Promise(function(e,i){try{var c=Be(),u=JSON.stringify(J({actionId:c},n));if(r.addLog("Dispatched action with id "+c),o&&a){r._addPendingAction(c);var l=s(a).subscribe(function(){r._removePendingAction(c),i("Action with id "+c+" timed out after "+a+"ms")});r.subscribeToCharacteristic({characteristicName:t,manageNotifications:!1}).pipe(P(function(e){return(null==e?void 0:e.actionId)===c}),C(1)).subscribe(function(t){l.unsubscribe(),r._removePendingAction(c),e(t)}),r.writeCharacteristic(t,u).catch(function(e){r._removePendingAction(c),i(e.message)})}else r.writeCharacteristic(t,u).then(function(){e(null)}).catch(function(e){i(e.message)});return Promise.resolve()}catch(e){return Promise.reject(e)}}))}catch(e){return Promise.reject(e)}},r}(),et="data",tt=function(e){return e instanceof Object&&e===Object(e)},nt=function(e){return"function"==typeof e};function rt(e){var t,n,o,c,s,a,u;return null!=e&&e.samplingRate||console.warn("Didn't receive a sampling rate, defaulting to 256"),i(i(b(function(e){return r(e)}),g(function(e){return{timestamp:e[0],data:e.slice(2)}})),(n={duration:16,interval:16,samplingRate:null!=(t=null==e?void 0:e.samplingRate)?t:256},o=n.duration,c=n.samplingRate,a=void 0===(s=n.dataProp)?et:s,i(D(n.interval),T(function(e,t){return e.concat(t).slice(e.length<o?0:-o)}),P(function(e){return e.length===o}),function(e){var t=void 0===e?{}:e,n=t.samplingRate,r=void 0===n?256:n,o=t.dataProp,c=void 0===o?et:o;return i(g(function(e){var t;return(t={})[c]=function(e,t){return void 0===t&&(t=et),e[0][t].map(function(n,r){return e.map(function(e){return e[t][r]})})}(e,c),t.info=J({},e[0]&&e[0].info?e[0].info:{},{startTime:e[0].timestamp,samplingRate:e[0].info&&e[0].info.samplingRate?e[0].info.samplingRate:r}),t}))}({samplingRate:c,dataProp:a}))),(u={channelNames:e.channelNames,samplingRate:e.samplingRate},i(g(function(e){if(!tt(e)||!tt(u)&&!nt(u))return e;var t=nt(u)?u(e):u;return function(e){return function(t){var n;return J({},e,{info:J({},null!=(n=null==e?void 0:e.info)?n:{},t||{})})}}(e)(t)}))))}var it=/*#__PURE__*/function(){function e(e){var t=this;this.transport=void 0,this.deviceInfo=void 0,this.selectedDevice$=new u(1),this.isAuthenticated$=new u(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 n=null!=e?e:{},r=n.transport,i=n.selectedDevice$,o=n.createBluetoothToken;if(!r)throw new Error("No bluetooth transport provided.");this.transport=r,i&&i.subscribe(this.selectedDevice$),this.transport._autoConnect(this.selectedDevice$).subscribe({error:function(e){var n;t.transport.addLog("Auto connect: error -> "+(null!=(n=null==e?void 0:e.message)?n:e))}}),"function"==typeof o?(this.transport.addLog("Auto authentication enabled"),this._autoAuthenticate(o).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 n=e.prototype;return n._autoAuthenticate=function(e){var n=this,r=s(0,36e5).pipe(N(function(){n.transport.addLog("Auto authentication in progress...")}));return this.selectedDevice$.pipe(p(function(i){return Ve(i)?n.connection().pipe(p(function(e){return e===Pe.CONNECTED?r:t}),p(function(){try{return Promise.resolve(n.isAuthenticated())}catch(e){return Promise.reject(e)}}),N(function(t){var r=t[0];try{var i=function(){if(!r)return Promise.resolve(e()).then(function(e){return Promise.resolve(n.authenticate(e)).then(function(){})});n.transport.addLog("Already authenticated")}();return Promise.resolve(i&&i.then?i.then(function(){}):void 0)}catch(e){return Promise.reject(e)}})):t}))},n.enableAutoConnect=function(e){this.transport.enableAutoConnect(e)},n._hasBluetoothSupport=function(){try{return Promise.resolve(l(this.selectedDevice$)).then(Ve)}catch(e){return Promise.reject(e)}},n.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)}},n.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)}},n.scan=function(e){if(this.transport instanceof Xe)return this.transport.scan(e);if(this.transport instanceof Ke)throw new Error("scan method is compatibly with the React Native transport only");throw new Error("unknown transport")},n.connect=function(e){return this.transport instanceof Xe?this.transport.connect(e):this.transport instanceof Ke?e?this.transport.connect(e):this.transport.connect():void 0},n.disconnect=function(){return this.transport.disconnect()},n.connection=function(){return this.transport.connection()},n.logs=function(){return this.transport.logs$.asObservable()},n.getDeviceId=function(){try{return Promise.resolve(this.transport.readCharacteristic("deviceId"))}catch(e){return Promise.reject(e)}},n._withAuthentication=function(e){try{var t=this;return Promise.resolve(t._hasBluetoothSupport()).then(function(n){if(!n){var r="The OS version does not support Bluetooth.";return t.transport.addLog(r),Promise.reject(r)}return Promise.resolve(l(t.isAuthenticated$)).then(function(n){if(!n){var r="Authentication required.";return t.transport.addLog(r),Promise.reject(r)}return Promise.resolve(e())})})}catch(e){return Promise.reject(e)}},n._subscribeWhileAuthenticated=function(e){var n=this;return this.selectedDevice$.pipe(p(function(r){return Ve(r)?n.isAuthenticated$.pipe(y(),p(function(r){return r?n.transport.subscribeToCharacteristic({characteristicName:e}):t})):t}),j())},n.focus=function(){return this._focus$},n.calm=function(){return this._calm$},n.accelerometer=function(){return this._accelerometer$},n.brainwaves=function(e){var t=this;switch(e){default:case"raw":return m(function(){return t.getInfo()}).pipe(p(function(e){return t._brainwavesRaw$.pipe(rt(e))}));case"rawUnfiltered":return m(function(){return t.getInfo()}).pipe(p(function(e){return t._brainwavesRawUnfiltered$.pipe(rt(e))}));case"psd":return this._brainwavesPSD$;case"powerByBand":return this._brainwavesPowerByBand$}},n.signalQuality=function(){return this._signalQuality$},n.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)}},n.getInfo=function(){try{var e=this;return Promise.resolve(e._withAuthentication(function(){return l(e.transport.subscribeToCharacteristic({characteristicName:"deviceInfo"}))}))}catch(e){return Promise.reject(e)}},n.status=function(){return this._status$},n.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)}},n.settings=function(){return this._settings$},n.haptics=function(e){return this.dispatchAction({action:"haptics",command:"queue",responseRequired:!0,responseTimeout:4e3,message:{effects:e}})},G(e,[{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})}}}}]),e}(),ot={timesync:!1,autoSelectDevice:!0,streamingMode:me.WIFI_ONLY,emulator:!1,emulatorHost:"localhost",emulatorAuthPort:9099,emulatorDatabasePort:9e3,emulatorFunctionsPort:5001,emulatorFirestorePort:8080,emulatorOptions:{}},ct=/*#__PURE__*/function(){function e(e){void 0===e&&(e={}),this.options=void 0,this.cloudClient=void 0,this.bluetoothClient=void 0,this.isMissingBluetoothTransport=void 0,this.streamingMode$=new u(1);var t=e.streamingMode,n=e.bluetoothTransport;this.options=Object.freeze(J({},ot,e)),this.cloudClient=new ve(this.options),n&&(this.bluetoothClient=new it({selectedDevice$:this.onDeviceChange(),createBluetoothToken:this.createBluetoothToken.bind(this),transport:n})),this._initStreamingMode(t,!!n)}var n=e.prototype;return n._initStreamingMode=function(e,t){var n=[me.BLUETOOTH_WITH_WIFI_FALLBACK,me.WIFI_WITH_BLUETOOTH_FALLBACK].includes(e),r=!Object.values(me).includes(e),i=n&&!t;this.isMissingBluetoothTransport=i,this.streamingMode$.next(!e||r||i?me.WIFI_ONLY:e)},n.streamingState=function(){var e=this,n=function(e){return[ae.ONLINE,ae.UPDATING].includes(e)};return this.streamingMode$.pipe(p(function(r){return e.isMissingBluetoothTransport?e.cloudClient.status().pipe(g(function(e){return{connected:n(e.state),streamingMode:r,activeMode:fe.WIFI}})):e.onDeviceChange().pipe(p(function(i){return i?a({wifiStatus:e.cloudClient.status(),bluetoothConnection:null!=e&&e.bluetoothClient?e.bluetoothClient.connection():o(Pe.DISCONNECTED)}).pipe(g(function(e){var t=e.wifiStatus,i=e.bluetoothConnection===Pe.CONNECTED;switch(r){default:case me.WIFI_ONLY:return{connected:n(t.state),streamingMode:r,activeMode:fe.WIFI};case me.WIFI_WITH_BLUETOOTH_FALLBACK:return{connected:n(t.state)||!i?n(t.state):i,streamingMode:r,activeMode:n(t.state)||!i?fe.WIFI:fe.BLUETOOTH};case me.BLUETOOTH_WITH_WIFI_FALLBACK:return{connected:!!i||n(t.state),streamingMode:r,activeMode:i?fe.BLUETOOTH:fe.WIFI}}}),y(function(e,t){return O(e,t)})):t}))}))},n._withStreamingModeObservable=function(e){var t=e.wifi,n=e.bluetooth;return this.streamingState().pipe(p(function(e){switch(e.activeMode){case fe.WIFI:return t();case fe.BLUETOOTH:return n();default:return t()}}))},n._withStreamingModePromise=function(e){try{var t=e.wifi,n=e.bluetooth;return Promise.resolve(l(this.streamingState())).then(function(e){switch(e.activeMode){case fe.WIFI:return Promise.resolve(t());case fe.BLUETOOTH:return Promise.resolve(n());default:return Promise.resolve(t())}})}catch(e){return Promise.reject(e)}},n._getCloudMetricDependencies=function(){return{options:this.options,cloudClient:this.cloudClient,onDeviceChange:this.onDeviceChange.bind(this),status:this.status.bind(this)}},n.login=function(e){try{return Promise.resolve(this.cloudClient.login(e))}catch(e){return Promise.reject(e)}},n.logout=function(){try{return Promise.resolve(this.cloudClient.logout())}catch(e){return Promise.reject(e)}},n.__getApp=function(){return this.cloudClient.__getApp()},n.onAuthStateChanged=function(){return this.cloudClient.onAuthStateChanged()},n.addDevice=function(e){var t=Oe(this.cloudClient.userClaims,"addDevice");return t[0]?Promise.reject(t[1]):this.cloudClient.addDevice(e)},n.removeDevice=function(e){var t=Oe(this.cloudClient.userClaims,"removeDevice");return t[0]?Promise.reject(t[1]):this.cloudClient.removeDevice(e)},n.transferDevice=function(e){var t=Oe(this.cloudClient.userClaims,"transferDevice");return t[0]?Promise.reject(t[1]):this.cloudClient.transferDevice(e)},n.onUserDevicesChange=function(){var e=Oe(this.cloudClient.userClaims,"onUserDevicesChange"),t=e[1];return e[0]?h(function(){return t}):this.cloudClient.onUserDevicesChange()},n.onUserClaimsChange=function(){return this.cloudClient.onUserClaimsChange()},n.getDevices=function(){try{return Promise.resolve(this.cloudClient.getDevices())}catch(e){return Promise.reject(e)}},n.selectDevice=function(e){try{var t=Oe(this.cloudClient.userClaims,"selectDevice");return t[0]?Promise.reject(t[1]):Promise.resolve(this.cloudClient.selectDevice(e))}catch(e){return Promise.reject(e)}},n.getSelectedDevice=function(){try{var e=Oe(this.cloudClient.userClaims,"getSelectedDevice");return e[0]?Promise.reject(e[1]):Promise.resolve(this.cloudClient.getSelectedDevice())}catch(e){return Promise.reject(e)}},n.getInfo=function(){try{var e=this;return Promise.resolve(e.cloudClient.didSelectDevice()).then(function(t){if(!t)return Promise.reject(De);var n=Oe(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)}},n.onDeviceChange=function(){var e=Oe(this.cloudClient.userClaims,"onDeviceChange"),t=e[1];return e[0]?h(function(){return t}):this.cloudClient.onDeviceChange()},n.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)}},n.dispatchAction=function(e){try{var t=this;return Promise.resolve(t.cloudClient.didSelectDevice()).then(function(n){if(!n)return Promise.reject(De);var r=function(e,t){var n=null!=e?e:{};if(!n.oauth)return[!1,null];var r=n.scopes.split(","),i=Ee[t.command+"/"+t.action];return r.includes(i)?[!1,null]:[!0,Ue(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)}},n.addMarker=function(e){try{var t=this;return Promise.resolve(t.cloudClient.didSelectDevice()).then(function(n){if(!n)throw De;if(!e)throw new Error(Se+"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)}},n.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 Te[e].includes(je)}(i);if(!o)return Promise.reject(we(n,i));var c=function(e){var t,n=Ne[e];return J({},null!=(t=null==n?void 0:n.motorByMotorName)?t:{})}(i);for(var s in e){if(!Object.keys(c).includes(s))return Promise.reject(ye(s,i));var a=e[s];if(a.length>7)return Promise.reject(new Error(Se+"Maximum items in array is 7"));c[s]=a}var u={command:n,action:"queue",responseRequired:!0,responseTimeout:1e3,message:{effects:c}};return Promise.resolve(t._withStreamingModePromise({wifi:function(){return t.cloudClient.dispatchAction(u)},bluetooth:function(){return t.bluetoothClient.dispatchAction(u)}}))}):Promise.reject(De)})}catch(e){return Promise.reject(e)}},n.getHapticEffects=function(){return Me},n.accelerometer=function(){var e=this,t="accelerometer",n=Oe(this.cloudClient.userClaims,t),r=n[1];return n[0]?h(function(){return r}):this.onDeviceChange().pipe(p(function(n){var r=(null==n?void 0:n.modelVersion)||"1",i=function(e){return Te[e].includes(ke)}(r);return i?e._withStreamingModeObservable({wifi:function(){return $e(e._getCloudMetricDependencies(),{metric:t,labels:Ae(t),atomic:!0})},bluetooth:function(){return e.bluetoothClient.accelerometer()}}):h(function(){return we(t,r)})}))},n.brainwaves=function(e){var t=this,n=Oe(this.cloudClient.userClaims,"brainwaves"),r=n[1];return n[0]?h(function(){return r}):this._withStreamingModeObservable({wifi:function(){return $e(t._getCloudMetricDependencies(),{metric:"brainwaves",labels:e?[e]:[],atomic:!1})},bluetooth:function(){return t.bluetoothClient.brainwaves(e)}})},n.calm=function(){var e=this,t=Oe(this.cloudClient.userClaims,"calm"),n=t[1];return t[0]?h(function(){return n}):this._withStreamingModeObservable({wifi:function(){return $e(e._getCloudMetricDependencies(),{metric:"awareness",labels:["calm"],atomic:!1})},bluetooth:function(){return e.bluetoothClient.calm()}})},n.signalQuality=function(){var e=this,t="signalQuality",n=Oe(this.cloudClient.userClaims,t),r=n[1];return n[0]?h(function(){return r}):this._withStreamingModeObservable({wifi:function(){return $e(e._getCloudMetricDependencies(),{metric:t,labels:Ae(t),atomic:!0})},bluetooth:function(){return e.bluetoothClient.signalQuality()}})},n.settings=function(){var e=Oe(this.cloudClient.userClaims,"settings"),t=e[1];return e[0]?h(function(){return t}):this.cloudClient.observeNamespace("settings")},n.focus=function(){var e=this,t=Oe(this.cloudClient.userClaims,"focus"),n=t[1];return t[0]?h(function(){return n}):this._withStreamingModeObservable({wifi:function(){return $e(e._getCloudMetricDependencies(),{metric:"awareness",labels:["focus"],atomic:!1})},bluetooth:function(){return e.bluetoothClient.focus()}})},n.kinesis=function(e){var t="kinesis",n=Oe(this.cloudClient.userClaims,t),r=n[1];return n[0]?h(function(){return r}):$e(this._getCloudMetricDependencies(),{metric:t,labels:e?[e]:[],atomic:!1})},n.predictions=function(e){var t="predictions",n=Oe(this.cloudClient.userClaims,t),r=n[1];return n[0]?h(function(){return r}):$e(this._getCloudMetricDependencies(),{metric:t,labels:e?[e]:[],atomic:!1})},n.status=function(){var e=this,t=Oe(this.cloudClient.userClaims,"status"),n=t[1];return t[0]?h(function(){return n}):this._withStreamingModeObservable({wifi:function(){return e.cloudClient.status()},bluetooth:function(){return e.bluetoothClient.status()}})},n.changeSettings=function(e){try{var t=this;return Promise.resolve(t.cloudClient.didSelectDevice()).then(function(n){if(!n)return Promise.reject(De);var r=Oe(t.cloudClient.userClaims,"changeSettings");return r[0]?Promise.reject(r[1]):Promise.resolve(t.cloudClient.changeSettings(e))})}catch(e){return Promise.reject(e)}},n.goOffline=function(){this.cloudClient.goOffline()},n.goOnline=function(){this.cloudClient.goOnline()},n.createAccount=function(e){return this.cloudClient.createAccount(e)},n.deleteAccount=function(){return this.cloudClient.deleteAccount()},n.createBluetoothToken=function(){return this.cloudClient.createBluetoothToken()},n.createCustomToken=function(){return this.cloudClient.createCustomToken()},n.getTimesyncOffset=function(){return this.options.timesync||console.warn("getTimesyncOffset() requires options.timesync to be true."),this.options.timesync?this.cloudClient.getTimesyncOffset():0},n.createOAuthURL=function(e){return Re?function(e,t){var n=e.clientId,r=e.clientSecret,i=e.responseType,o=e.redirectUri,c=e.scope,s=e.state,a=Le(t);return z.get(a+"/authorize/entry",{params:J({client_id:n},r?{client_secret:r}:{},{response_type:i,redirect_uri:o,scope:c.join(","),state:s,redirect:"false"})}).then(function(e){return""+a+e.data.url})}(e,this.options):Promise.reject(new Error(Se+"the createOAuthURL method must be used on the server side (node.js) for security reasons."))},n.getOAuthToken=function(e){return Re?function(e,t){try{var n=Le(t);return Promise.resolve(z.post(n+"/getOAuthRefreshToken",e)).then(function(t){return z.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(Se+"the getOAuthToken method must be used on the server side (node.js) for security reasons."))},n.removeOAuthAccess=function(){return this.cloudClient.removeOAuthAccess()},n.onUserExperiments=function(){return this.cloudClient.onUserExperiments()},n.deleteUserExperiment=function(e){return this.cloudClient.deleteUserExperiment(e)},G(e,[{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 De;var r=J({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 De;return Promise.resolve(t.cloudClient.actions.dispatch({command:"training",action:"stop",message:J({},e)})).then(function(){})})}catch(e){return Promise.reject(e)}},stopAll:function(){try{return Promise.resolve(n.cloudClient.didSelectDevice()).then(function(e){if(!e)throw De;return Promise.resolve(n.cloudClient.actions.dispatch({command:"training",action:"stopAll",message:{}})).then(function(){})})}catch(e){return Promise.reject(e)}}}}}]),e}();ct.credentialWithLink=ne,ct.createUser=function(){return Y(U.User,[].slice.call(arguments))},ct.SERVER_TIMESTAMP=X;var st=/*#__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,K(t,n),r}(ct);export{Pe as BLUETOOTH_CONNECTION,it as BluetoothClient,ct as Neurosity,st as Notion,Xe as ReactNativeTransport,Ce as TRANSPORT_TYPE,Ke as WebBluetoothTransport,Ve as osHasBluetoothSupport};
|
|
2
|
+
//# sourceMappingURL=index.m.js.map
|