@neurosity/sdk 6.5.4-next.0 → 6.5.5
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/browser/neurosity.iife.js +22809 -35172
- package/dist/browser/neurosity.js +44 -58
- package/dist/browser/neurosity.js.map +1 -1
- package/dist/cjs/api/firebase/FirebaseApp.d.ts +5 -5
- package/dist/cjs/api/firebase/FirebaseApp.js +5 -5
- package/dist/cjs/api/firebase/FirebaseDevice.d.ts +1 -1
- package/dist/cjs/api/firebase/FirebaseDevice.js +1 -1
- package/dist/cjs/api/firebase/FirebaseUser.d.ts +7 -1
- package/dist/cjs/api/firebase/FirebaseUser.js +21 -8
- package/dist/cjs/api/firebase/deviceStore.js +8 -3
- package/dist/cjs/api/index.d.ts +2 -41
- package/dist/cjs/api/index.js +4 -1
- package/dist/cjs/index.d.ts +1 -0
- package/dist/cjs/index.js +1 -0
- package/dist/cjs/types/streaming.d.ts +0 -3
- package/dist/cjs/types/streaming.js +0 -3
- package/dist/electron/index.js +7 -7
- package/dist/electron/index.js.map +1 -1
- package/dist/esm/api/firebase/FirebaseApp.d.ts +5 -5
- package/dist/esm/api/firebase/FirebaseApp.js +5 -5
- package/dist/esm/api/firebase/FirebaseDevice.d.ts +1 -1
- package/dist/esm/api/firebase/FirebaseDevice.js +1 -1
- package/dist/esm/api/firebase/FirebaseUser.d.ts +7 -1
- package/dist/esm/api/firebase/FirebaseUser.js +21 -8
- package/dist/esm/api/firebase/deviceStore.js +8 -3
- package/dist/esm/api/index.d.ts +2 -41
- package/dist/esm/api/index.js +4 -1
- package/dist/esm/index.d.ts +1 -0
- package/dist/esm/index.js +1 -0
- package/dist/esm/neurosity.mjs +22786 -35149
- package/dist/esm/types/streaming.d.ts +0 -3
- package/dist/esm/types/streaming.js +0 -3
- package/dist/examples/neurosity.iife.js +22809 -35172
- package/dist/examples/neurosity.js +44 -58
- package/dist/examples/neurosity.mjs +22786 -35149
- package/package.json +2 -2
|
@@ -1,8 +1,8 @@
|
|
|
1
|
-
import firebase from "firebase/
|
|
2
|
-
import "firebase/
|
|
3
|
-
import "firebase/
|
|
4
|
-
import "firebase/
|
|
5
|
-
import "firebase/
|
|
1
|
+
import firebase from "firebase/app";
|
|
2
|
+
import "firebase/database";
|
|
3
|
+
import "firebase/auth";
|
|
4
|
+
import "firebase/functions";
|
|
5
|
+
import "firebase/firestore";
|
|
6
6
|
import { SDKOptions } from "../../types/options";
|
|
7
7
|
export declare const SERVER_TIMESTAMP: Object;
|
|
8
8
|
/**
|
|
@@ -4,11 +4,11 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
|
4
4
|
};
|
|
5
5
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
6
|
exports.FirebaseApp = exports.SERVER_TIMESTAMP = void 0;
|
|
7
|
-
const app_1 = __importDefault(require("firebase/
|
|
8
|
-
require("firebase/
|
|
9
|
-
require("firebase/
|
|
10
|
-
require("firebase/
|
|
11
|
-
require("firebase/
|
|
7
|
+
const app_1 = __importDefault(require("firebase/app"));
|
|
8
|
+
require("firebase/database");
|
|
9
|
+
require("firebase/auth");
|
|
10
|
+
require("firebase/functions");
|
|
11
|
+
require("firebase/firestore");
|
|
12
12
|
const config_1 = require("./config");
|
|
13
13
|
exports.SERVER_TIMESTAMP = app_1.default.database.ServerValue.TIMESTAMP;
|
|
14
14
|
/**
|
|
@@ -13,7 +13,7 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
|
13
13
|
};
|
|
14
14
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
15
15
|
exports.FirebaseDevice = void 0;
|
|
16
|
-
const app_1 = __importDefault(require("firebase/
|
|
16
|
+
const app_1 = __importDefault(require("firebase/app"));
|
|
17
17
|
const deviceStore_1 = require("./deviceStore");
|
|
18
18
|
const SERVER_TIMESTAMP = app_1.default.database.ServerValue.TIMESTAMP;
|
|
19
19
|
/**
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { Observable } from "rxjs";
|
|
2
|
-
import firebase from "firebase/
|
|
2
|
+
import firebase from "firebase/app";
|
|
3
3
|
import { User } from "@firebase/auth-types";
|
|
4
4
|
import { FirebaseApp } from "./FirebaseApp";
|
|
5
5
|
import { Credentials, EmailAndPassword, CustomToken } from "../../types/credentials";
|
|
@@ -8,6 +8,12 @@ import { DeviceInfo } from "../../types/deviceInfo";
|
|
|
8
8
|
import { OAuthRemoveResponse } from "../../types/oauth";
|
|
9
9
|
import { Experiment } from "../../types/experiment";
|
|
10
10
|
import { TransferDeviceOptions } from "../../utils/transferDevice";
|
|
11
|
+
/**
|
|
12
|
+
* @hidden
|
|
13
|
+
*/
|
|
14
|
+
export declare type UserWithMetadata = User & {
|
|
15
|
+
selectedDevice: DeviceInfo | null;
|
|
16
|
+
};
|
|
11
17
|
/**
|
|
12
18
|
* @hidden
|
|
13
19
|
*/
|
|
@@ -15,7 +15,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
15
15
|
exports.FirebaseUser = exports.createUser = exports.credentialWithLink = void 0;
|
|
16
16
|
const rxjs_1 = require("rxjs");
|
|
17
17
|
const operators_1 = require("rxjs/operators");
|
|
18
|
-
const app_1 = __importDefault(require("firebase/
|
|
18
|
+
const app_1 = __importDefault(require("firebase/app"));
|
|
19
19
|
const SERVER_TIMESTAMP = app_1.default.database.ServerValue.TIMESTAMP;
|
|
20
20
|
/**
|
|
21
21
|
* @hidden
|
|
@@ -94,7 +94,9 @@ class FirebaseUser {
|
|
|
94
94
|
}
|
|
95
95
|
onLogin() {
|
|
96
96
|
return new rxjs_1.Observable((subscriber) => {
|
|
97
|
-
const unsubscribe = this.app
|
|
97
|
+
const unsubscribe = this.app
|
|
98
|
+
.auth()
|
|
99
|
+
.onAuthStateChanged((user) => {
|
|
98
100
|
if (!!user) {
|
|
99
101
|
subscriber.next(user);
|
|
100
102
|
subscriber.complete();
|
|
@@ -115,7 +117,9 @@ class FirebaseUser {
|
|
|
115
117
|
}
|
|
116
118
|
if ("email" in credentials && "password" in credentials) {
|
|
117
119
|
const { email, password } = credentials;
|
|
118
|
-
return this.app
|
|
120
|
+
return this.app
|
|
121
|
+
.auth()
|
|
122
|
+
.signInWithEmailAndPassword(email, password);
|
|
119
123
|
}
|
|
120
124
|
throw new Error(`Either {email,password}, {customToken}, or {idToken,providerId} is required`);
|
|
121
125
|
}
|
|
@@ -243,7 +247,8 @@ class FirebaseUser {
|
|
|
243
247
|
if (!userId) {
|
|
244
248
|
return Promise.reject(new Error(`transferDevice: auth is required.`));
|
|
245
249
|
}
|
|
246
|
-
if (!("recipientsEmail" in options) &&
|
|
250
|
+
if (!("recipientsEmail" in options) &&
|
|
251
|
+
!("recipientsUserId" in options)) {
|
|
247
252
|
return Promise.reject(new Error(`transferDevice: either 'recipientsEmail' or 'recipientsUserId' key is required.`));
|
|
248
253
|
}
|
|
249
254
|
if (!(options === null || options === void 0 ? void 0 : options.deviceId)) {
|
|
@@ -263,7 +268,9 @@ class FirebaseUser {
|
|
|
263
268
|
return __awaiter(this, void 0, void 0, function* () {
|
|
264
269
|
// hex string of 32 characters
|
|
265
270
|
const hexRegEx = /[0-9A-Fa-f]{32}/g;
|
|
266
|
-
if (!deviceId ||
|
|
271
|
+
if (!deviceId ||
|
|
272
|
+
deviceId.length !== 32 ||
|
|
273
|
+
!hexRegEx.test(deviceId)) {
|
|
267
274
|
return Promise.reject("The device id is incorrectly formatted.");
|
|
268
275
|
}
|
|
269
276
|
const claimedByPath = this.getDeviceClaimedByPath(deviceId);
|
|
@@ -295,7 +302,9 @@ class FirebaseUser {
|
|
|
295
302
|
return rxjs_1.EMPTY;
|
|
296
303
|
}
|
|
297
304
|
const claimsUpdatedOnPath = this.getUserClaimsUpdatedOnPath();
|
|
298
|
-
const claimsUpdatedOnRef = this.app
|
|
305
|
+
const claimsUpdatedOnRef = this.app
|
|
306
|
+
.database()
|
|
307
|
+
.ref(claimsUpdatedOnPath);
|
|
299
308
|
return (0, rxjs_1.fromEventPattern)((handler) => claimsUpdatedOnRef.on("value", handler), (handler) => claimsUpdatedOnRef.off("value", handler)).pipe((0, operators_1.map)(([snapshot]) => snapshot.val()), (0, operators_1.switchMap)(() => {
|
|
300
309
|
// Force refresh of auth id token
|
|
301
310
|
return (0, rxjs_1.from)(this.getIdToken(true)).pipe((0, operators_1.switchMap)(() => (0, rxjs_1.from)(this.getClaims())));
|
|
@@ -330,11 +339,15 @@ class FirebaseUser {
|
|
|
330
339
|
}
|
|
331
340
|
userDevicesToDeviceInfoList(userDevices) {
|
|
332
341
|
return __awaiter(this, void 0, void 0, function* () {
|
|
333
|
-
const devicesInfoSnapshots = Object.keys(userDevices !== null && userDevices !== void 0 ? userDevices : {}).map((deviceId) => this.app
|
|
342
|
+
const devicesInfoSnapshots = Object.keys(userDevices !== null && userDevices !== void 0 ? userDevices : {}).map((deviceId) => this.app
|
|
343
|
+
.database()
|
|
344
|
+
.ref(this.getDeviceInfoPath(deviceId))
|
|
345
|
+
.once("value"));
|
|
334
346
|
const devicesList = yield Promise.all(devicesInfoSnapshots).then((snapshots) => snapshots.map((snapshot) => snapshot.val()));
|
|
335
347
|
const validDevices = devicesList.filter((device) => !!device);
|
|
336
348
|
validDevices.sort((a, b) => {
|
|
337
|
-
return (userDevices[a.deviceId].claimedOn -
|
|
349
|
+
return (userDevices[a.deviceId].claimedOn -
|
|
350
|
+
userDevices[b.deviceId].claimedOn);
|
|
338
351
|
});
|
|
339
352
|
return validDevices;
|
|
340
353
|
});
|
|
@@ -13,7 +13,7 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
|
13
13
|
};
|
|
14
14
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
15
15
|
exports.createDeviceStore = void 0;
|
|
16
|
-
const app_1 = __importDefault(require("firebase/
|
|
16
|
+
const app_1 = __importDefault(require("firebase/app"));
|
|
17
17
|
const SERVER_TIMESTAMP = app_1.default.database.ServerValue.TIMESTAMP;
|
|
18
18
|
/**
|
|
19
19
|
* @hidden
|
|
@@ -33,7 +33,9 @@ const createDeviceStore = (app, deviceId, subscriptionManager) => {
|
|
|
33
33
|
return deviceRef.child(namespace).update(payload);
|
|
34
34
|
};
|
|
35
35
|
const on = (eventType = "value", namespace, callback) => {
|
|
36
|
-
const listener = deviceRef
|
|
36
|
+
const listener = deviceRef
|
|
37
|
+
.child(namespace)
|
|
38
|
+
.on(eventType, (snapshot) => {
|
|
37
39
|
callback(snapshot.val(), snapshot);
|
|
38
40
|
});
|
|
39
41
|
listenersToRemove.push(() => {
|
|
@@ -99,7 +101,10 @@ const createDeviceStore = (app, deviceId, subscriptionManager) => {
|
|
|
99
101
|
});
|
|
100
102
|
});
|
|
101
103
|
listenersToRemove.push(() => {
|
|
102
|
-
app
|
|
104
|
+
app
|
|
105
|
+
.database()
|
|
106
|
+
.ref(".info/connected")
|
|
107
|
+
.off("value", connectedListener);
|
|
103
108
|
});
|
|
104
109
|
return {
|
|
105
110
|
set,
|
package/dist/cjs/api/index.d.ts
CHANGED
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import { Observable } from "rxjs";
|
|
2
2
|
import { FirebaseApp, FirebaseUser, FirebaseDevice } from "./firebase";
|
|
3
|
+
import { UserWithMetadata } from "./firebase";
|
|
3
4
|
import { Timesync } from "../timesync";
|
|
4
5
|
import { SubscriptionManager } from "../subscriptions/SubscriptionManager";
|
|
5
6
|
import { Client } from "../types/client";
|
|
@@ -41,47 +42,7 @@ export declare class CloudClient implements Client {
|
|
|
41
42
|
getInfo(): Promise<any>;
|
|
42
43
|
login(credentials: Credentials): Promise<any>;
|
|
43
44
|
logout(): Promise<any>;
|
|
44
|
-
onAuthStateChanged(): Observable<
|
|
45
|
-
selectedDevice: DeviceInfo;
|
|
46
|
-
delete(): Promise<void>;
|
|
47
|
-
emailVerified: boolean;
|
|
48
|
-
getIdTokenResult(forceRefresh?: boolean): Promise<import("@firebase/auth-types").IdTokenResult>;
|
|
49
|
-
getIdToken(forceRefresh?: boolean): Promise<string>;
|
|
50
|
-
isAnonymous: boolean;
|
|
51
|
-
linkAndRetrieveDataWithCredential(credential: import("@firebase/auth-types").AuthCredential): Promise<import("@firebase/auth-types").UserCredential>;
|
|
52
|
-
linkWithCredential(credential: import("@firebase/auth-types").AuthCredential): Promise<import("@firebase/auth-types").UserCredential>;
|
|
53
|
-
linkWithPhoneNumber(phoneNumber: string, applicationVerifier: import("@firebase/auth-types").ApplicationVerifier): Promise<import("@firebase/auth-types").ConfirmationResult>;
|
|
54
|
-
linkWithPopup(provider: import("@firebase/auth-types").AuthProvider): Promise<import("@firebase/auth-types").UserCredential>;
|
|
55
|
-
linkWithRedirect(provider: import("@firebase/auth-types").AuthProvider): Promise<void>;
|
|
56
|
-
metadata: import("@firebase/auth-types").UserMetadata;
|
|
57
|
-
multiFactor: import("@firebase/auth-types").MultiFactorUser;
|
|
58
|
-
phoneNumber: string;
|
|
59
|
-
providerData: import("@firebase/auth-types").UserInfo[];
|
|
60
|
-
reauthenticateAndRetrieveDataWithCredential(credential: import("@firebase/auth-types").AuthCredential): Promise<import("@firebase/auth-types").UserCredential>;
|
|
61
|
-
reauthenticateWithCredential(credential: import("@firebase/auth-types").AuthCredential): Promise<import("@firebase/auth-types").UserCredential>;
|
|
62
|
-
reauthenticateWithPhoneNumber(phoneNumber: string, applicationVerifier: import("@firebase/auth-types").ApplicationVerifier): Promise<import("@firebase/auth-types").ConfirmationResult>;
|
|
63
|
-
reauthenticateWithPopup(provider: import("@firebase/auth-types").AuthProvider): Promise<import("@firebase/auth-types").UserCredential>;
|
|
64
|
-
reauthenticateWithRedirect(provider: import("@firebase/auth-types").AuthProvider): Promise<void>;
|
|
65
|
-
refreshToken: string;
|
|
66
|
-
reload(): Promise<void>;
|
|
67
|
-
sendEmailVerification(actionCodeSettings?: import("@firebase/auth-types").ActionCodeSettings): Promise<void>;
|
|
68
|
-
tenantId: string;
|
|
69
|
-
toJSON(): Object;
|
|
70
|
-
unlink(providerId: string): Promise<import("@firebase/auth-types").User>;
|
|
71
|
-
updateEmail(newEmail: string): Promise<void>;
|
|
72
|
-
updatePassword(newPassword: string): Promise<void>;
|
|
73
|
-
updatePhoneNumber(phoneCredential: import("@firebase/auth-types").AuthCredential): Promise<void>;
|
|
74
|
-
updateProfile(profile: {
|
|
75
|
-
displayName?: string;
|
|
76
|
-
photoURL?: string;
|
|
77
|
-
}): Promise<void>;
|
|
78
|
-
verifyBeforeUpdateEmail(newEmail: string, actionCodeSettings?: import("@firebase/auth-types").ActionCodeSettings): Promise<void>;
|
|
79
|
-
displayName: string;
|
|
80
|
-
email: string;
|
|
81
|
-
photoURL: string;
|
|
82
|
-
providerId: string;
|
|
83
|
-
uid: string;
|
|
84
|
-
}>;
|
|
45
|
+
onAuthStateChanged(): Observable<UserWithMetadata>;
|
|
85
46
|
getDevices(): Promise<DeviceInfo[]>;
|
|
86
47
|
addDevice(deviceId: string): Promise<void>;
|
|
87
48
|
removeDevice(deviceId: string): Promise<void>;
|
package/dist/cjs/api/index.js
CHANGED
|
@@ -141,7 +141,10 @@ class CloudClient {
|
|
|
141
141
|
const selectedDevice = this.didSelectDevice()
|
|
142
142
|
? yield this.getSelectedDevice()
|
|
143
143
|
: yield this.setAutoSelectedDevice();
|
|
144
|
-
|
|
144
|
+
const userWithMetadata = Object.assign(user, {
|
|
145
|
+
selectedDevice
|
|
146
|
+
});
|
|
147
|
+
return userWithMetadata;
|
|
145
148
|
})));
|
|
146
149
|
}
|
|
147
150
|
getDevices() {
|
package/dist/cjs/index.d.ts
CHANGED
package/dist/cjs/index.js
CHANGED
|
@@ -16,3 +16,4 @@ var __exportStar = (this && this.__exportStar) || function(m, exports) {
|
|
|
16
16
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
17
17
|
__exportStar(require("./Neurosity"), exports);
|
|
18
18
|
__exportStar(require("./api/bluetooth"), exports);
|
|
19
|
+
__exportStar(require("./types/streaming"), exports);
|
|
@@ -9,9 +9,6 @@ var STREAMING_TYPE;
|
|
|
9
9
|
STREAMING_TYPE["WIFI"] = "wifi";
|
|
10
10
|
STREAMING_TYPE["BLUETOOTH"] = "bluetooth";
|
|
11
11
|
})(STREAMING_TYPE = exports.STREAMING_TYPE || (exports.STREAMING_TYPE = {}));
|
|
12
|
-
/**
|
|
13
|
-
* @hidden
|
|
14
|
-
*/
|
|
15
12
|
var STREAMING_MODE;
|
|
16
13
|
(function (STREAMING_MODE) {
|
|
17
14
|
STREAMING_MODE["WIFI_ONLY"] = "wifi-only";
|
package/dist/electron/index.js
CHANGED
|
@@ -1,13 +1,13 @@
|
|
|
1
1
|
process.env.HMR_PORT=0;process.env.HMR_HOSTNAME="localhost";parcelRequire=function(e,r,t,n){var i,o="function"==typeof parcelRequire&&parcelRequire,u="function"==typeof require&&require;function f(t,n){if(!r[t]){if(!e[t]){var i="function"==typeof parcelRequire&&parcelRequire;if(!n&&i)return i(t,!0);if(o)return o(t,!0);if(u&&"string"==typeof t)return u(t);var c=new Error("Cannot find module '"+t+"'");throw c.code="MODULE_NOT_FOUND",c}p.resolve=function(r){return e[t][1][r]||r},p.cache={};var l=r[t]=new f.Module(t);e[t][0].call(l.exports,p,l,l.exports,this)}return r[t].exports;function p(e){return f(p.resolve(e))}}f.isParcelRequire=!0,f.Module=function(e){this.id=e,this.bundle=f,this.exports={}},f.modules=e,f.cache=r,f.parent=o,f.register=function(r,t){e[r]=[function(e,r){r.exports=t},{}]};for(var c=0;c<t.length;c++)try{f(t[c])}catch(e){i||(i=e)}if(t.length){var l=f(t[t.length-1]);"object"==typeof exports&&"undefined"!=typeof module?module.exports=l:"function"==typeof define&&define.amd?define(function(){return l}):n&&(this[n]=l)}if(parcelRequire=f,i)throw i;return f}({"TX5A":[function(require,module,exports) {
|
|
2
2
|
"use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.config=void 0,exports.config={apiKey:"AIzaSyB0TkZ83Fj0CIzn8AAmE-Osc92s3ER8hy8",authDomain:"neurosity-device.firebaseapp.com",databaseURL:"https://neurosity-device.firebaseio.com",projectId:"neurosity-device",storageBucket:"neurosity-device.appspot.com",messagingSenderId:"212595049674"};
|
|
3
3
|
},{}],"OERo":[function(require,module,exports) {
|
|
4
|
-
"use strict";var e=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(exports,"__esModule",{value:!0}),exports.FirebaseApp=exports.SERVER_TIMESTAMP=void 0;const t=e(require("firebase/
|
|
4
|
+
"use strict";var e=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(exports,"__esModule",{value:!0}),exports.FirebaseApp=exports.SERVER_TIMESTAMP=void 0;const t=e(require("firebase/app"));require("firebase/database"),require("firebase/auth"),require("firebase/functions"),require("firebase/firestore");const a=require("./config");exports.SERVER_TIMESTAMP=t.default.database.ServerValue.TIMESTAMP;class i{constructor(e){this.app=this.getApp(e.deviceId),this.standalone=this.app.name===e.deviceId,e.emulator&&this.connectEmulators(e)}getApp(e){const i=t.default.apps,s="undefined"!=typeof window&&"firebase"in window&&"apps"in window.firebase?window.firebase.apps:[],r=[...i,...s].find(e=>"[DEFAULT]"===e.name&&e.options.databaseURL===a.config.databaseURL);if(r)return r;if(e){const s=e,r=i.find(e=>e.name===s);return r||t.default.initializeApp(a.config,s)}return t.default.initializeApp(a.config)}connectEmulators(e){const{emulatorHost:t,emulatorAuthPort:a,emulatorDatabasePort:i,emulatorFunctionsPort:s,emulatorFirestorePort:r,emulatorOptions:o}=e;this.app.auth().useEmulator(`http://${t}:${a}`),this.app.database().useEmulator(t,i,o),this.app.functions().useEmulator(t,s),this.app.firestore().useEmulator(t,r,o)}goOnline(){this.app.database().goOnline()}goOffline(){this.app.database().goOffline()}disconnect(){return this.standalone?this.app.delete():Promise.resolve()}}exports.FirebaseApp=i;
|
|
5
5
|
},{"./config":"TX5A"}],"Cc51":[function(require,module,exports) {
|
|
6
|
-
"use strict";var e=this&&this.__awaiter||function(e,t,i,r){return new(i||(i=Promise))(function(n,s){function a(e){try{c(r.next(e))}catch(t){s(t)}}function o(e){try{c(r.throw(e))}catch(t){s(t)}}function c(e){var t;e.done?n(e.value):(t=e.value,t instanceof i?t:new i(function(e){e(t)})).then(a,o)}c((r=r.apply(e,t||[])).next())})},t=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(exports,"__esModule",{value:!0}),exports.FirebaseUser=exports.createUser=exports.credentialWithLink=void 0;const i=require("rxjs"),r=require("rxjs/operators"),n=t(require("firebase/
|
|
6
|
+
"use strict";var e=this&&this.__awaiter||function(e,t,i,r){return new(i||(i=Promise))(function(n,s){function a(e){try{c(r.next(e))}catch(t){s(t)}}function o(e){try{c(r.throw(e))}catch(t){s(t)}}function c(e){var t;e.done?n(e.value):(t=e.value,t instanceof i?t:new i(function(e){e(t)})).then(a,o)}c((r=r.apply(e,t||[])).next())})},t=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(exports,"__esModule",{value:!0}),exports.FirebaseUser=exports.createUser=exports.credentialWithLink=void 0;const i=require("rxjs"),r=require("rxjs/operators"),n=t(require("firebase/app")),s=n.default.database.ServerValue.TIMESTAMP;function a(...e){return new n.default.User(...e)}exports.credentialWithLink=n.default.auth.EmailAuthProvider.credentialWithLink,exports.createUser=a;class o{constructor(e){this.app=e.app,this.app.auth().onAuthStateChanged(e=>{this.user=e})}auth(){return this.app.auth()}createAccount(t){return e(this,void 0,void 0,function*(){const{email:e,password:i}=t,[r,n]=yield this.app.auth().createUserWithEmailAndPassword(e,i).then(e=>[null,e]).catch(e=>[e,null]);return r?Promise.reject(r):n})}deleteAccount(){return e(this,void 0,void 0,function*(){const e=this.app.auth().currentUser;if(!e)return 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."));const[t,i]=yield this.getDevices().then(e=>[null,e]).catch(e=>[e,null]);if(t)return Promise.reject(t);if(i.length){const e=yield Promise.all(i.map(e=>this.removeDevice(e.deviceId))).then(()=>null).catch(e=>e);if(e)return Promise.reject(e)}return e.delete()})}onAuthStateChanged(){return new i.Observable(e=>{try{this.app.auth().onAuthStateChanged(t=>{e.next(t)},t=>{e.error(t)})}catch(t){e.error(t)}})}onLogin(){return new i.Observable(e=>{const t=this.app.auth().onAuthStateChanged(t=>{t&&(e.next(t),e.complete())});return()=>t()})}login(e){if("customToken"in e){const{customToken:t}=e;return this.app.auth().signInWithCustomToken(t)}if("idToken"in e&&"providerId"in e){const t=new n.default.auth.OAuthProvider(e.providerId).credential(e.idToken);return this.app.auth().signInWithCredential(t)}if("email"in e&&"password"in e){const{email:t,password:i}=e;return this.app.auth().signInWithEmailAndPassword(t,i)}throw new Error("Either {email,password}, {customToken}, or {idToken,providerId} is required")}logout(){return this.app.auth().signOut()}createCustomToken(){return e(this,void 0,void 0,function*(){const[e,t]=yield this.app.functions().httpsCallable("createCustomToken")().then(({data:e})=>[null,e]).catch(e=>[e,null]);return e?Promise.reject(e):t})}removeOAuthAccess(){var t;return e(this,void 0,void 0,function*(){if(!(null===(t=this.user)||void 0===t?void 0:t.uid))return Promise.reject("OAuth access can only be removed while logged in via OAuth.");const[e,i]=yield this.app.functions().httpsCallable("removeAccessOAuthApp")().then(({data:e})=>[null,e]).catch(e=>[e,null]);if(e)return Promise.reject(e);const r=yield this.logout().then(()=>!1).catch(e=>e);return r?Promise.reject(r):i})}getDevices(){var t;return e(this,void 0,void 0,function*(){if(!(null===(t=this.user)||void 0===t?void 0:t.uid))return Promise.reject("Please login.");const e=(yield this.app.database().ref(this.getUserDevicesPath()).once("value")).val();return this.userDevicesToDeviceInfoList(e)})}addDevice(t){var i;return e(this,void 0,void 0,function*(){const e=null===(i=this.user)||void 0===i?void 0:i.uid;if(!e)return Promise.reject("Please login.");const r=yield this.getDevices().catch(e=>{console.log(e)});if(r&&r.length&&r.map(({deviceId:e})=>e).includes(t))return Promise.reject("The device is already added to this account.");const[n,a]=yield this.isDeviceIdValid(t).then(e=>[e]).catch(e=>[!1,e]);if(!n)return Promise.reject(a);const o=this.getDeviceClaimedByPath(t),c=this.getUserClaimedDevicePath(t),[u,d]=yield this.app.database().ref().update({[o]:e,[c]:{claimedOn:s}}).then(()=>[!1]).catch(e=>[!0,e]);return u?Promise.reject(d):void 0})}removeDevice(t){var i;return e(this,void 0,void 0,function*(){if(!(null===(i=this.user)||void 0===i?void 0:i.uid))return Promise.reject("Please login.");const e=this.getDeviceClaimedByPath(t),r=this.getUserClaimedDevicePath(t),n=this.app.database().ref(e),s=this.app.database().ref(r),[a,o]=yield Promise.all([n.remove(),s.remove()]).then(()=>[!1]).catch(e=>[!0,e]);return a?Promise.reject(o):void 0})}transferDevice(t){var i;return e(this,void 0,void 0,function*(){if(!(null===(i=this.user)||void 0===i?void 0:i.uid))return Promise.reject(new Error("transferDevice: auth is required."));if(!("recipientsEmail"in t||"recipientsUserId"in t))return Promise.reject(new Error("transferDevice: either 'recipientsEmail' or 'recipientsUserId' key is required."));if(!(null==t?void 0:t.deviceId))return Promise.reject(new Error("transferDevice: a deviceId is required."));const[e,r]=yield this.app.functions().httpsCallable("transferDeviceOwnership")(t).then(({data:e})=>[null,e]).catch(e=>[e,null]);return e?Promise.reject(e):void 0})}isDeviceIdValid(t){return e(this,void 0,void 0,function*(){if(!t||32!==t.length||!/[0-9A-Fa-f]{32}/g.test(t))return Promise.reject("The device id is incorrectly formatted.");const e=this.getDeviceClaimedByPath(t),i=this.app.database().ref(e),r=yield i.once("value").catch(()=>null);return!(!r||r.exists())||Promise.reject("The device has already been claimed.")})}onUserDevicesChange(){return this.onAuthStateChanged().pipe((0,r.switchMap)(e=>{if(!e)return i.EMPTY;const t=this.getUserDevicesPath(),n=this.app.database().ref(t);return(0,i.fromEventPattern)(e=>n.on("value",e),e=>n.off("value",e)).pipe((0,r.map)(([e])=>e.val()),(0,r.switchMap)(e=>(0,i.from)(this.userDevicesToDeviceInfoList(e))))}))}onUserClaimsChange(){return this.onAuthStateChanged().pipe((0,r.switchMap)(e=>{if(!e)return i.EMPTY;const t=this.getUserClaimsUpdatedOnPath(),n=this.app.database().ref(t);return(0,i.fromEventPattern)(e=>n.on("value",e),e=>n.off("value",e)).pipe((0,r.map)(([e])=>e.val()),(0,r.switchMap)(()=>(0,i.from)(this.getIdToken(!0)).pipe((0,r.switchMap)(()=>(0,i.from)(this.getClaims())))))}))}getIdToken(t=!1){var i;return e(this,void 0,void 0,function*(){const e=null===(i=this.app.auth())||void 0===i?void 0:i.currentUser;if(!e)return Promise.reject("getUserIdToken: unable to get currentUser");yield e.getIdToken(t).catch(e=>{console.error(e)})})}getClaims(){var e;const t=null===(e=this.app.auth())||void 0===e?void 0:e.currentUser;return t?t.getIdTokenResult().then(e=>e.claims).catch(e=>(console.error(e),null)):Promise.reject("getUserClaims: unable to get currentUser")}userDevicesToDeviceInfoList(t){return e(this,void 0,void 0,function*(){const e=Object.keys(null!=t?t:{}).map(e=>this.app.database().ref(this.getDeviceInfoPath(e)).once("value")),i=(yield Promise.all(e).then(e=>e.map(e=>e.val()))).filter(e=>!!e);return i.sort((e,i)=>t[e.deviceId].claimedOn-t[i.deviceId].claimedOn),i})}hasDevicePermission(t){return e(this,void 0,void 0,function*(){const e=this.getDeviceInfoPath(t);return yield this.app.database().ref(e).once("value").then(()=>!0).catch(()=>!1)})}getDeviceClaimedByPath(e){return`devices/${e}/status/claimedBy`}getUserClaimedDevicePath(e){return`users/${this.user.uid}/devices/${e}`}getUserDevicesPath(){return`users/${this.user.uid}/devices`}getUserClaimsUpdatedOnPath(){return`users/${this.user.uid}/claimsUpdatedOn`}getDeviceInfoPath(e){return`devices/${e}/info`}onUserExperiments(){return this.onAuthStateChanged().pipe((0,r.switchMap)(e=>{if(!e)return i.EMPTY;const t=this.user.uid,n=this.app.database().ref("experiments").orderByChild("userId").equalTo(t).limitToFirst(100);return(0,i.fromEventPattern)(e=>n.on("value",e),e=>n.off("value",e)).pipe((0,r.map)(([e])=>e.val()),(0,r.map)(e=>Object.entries(null!=e?e:{}).map(([e,t])=>{var i;return Object.assign({id:null!==(i=null==t?void 0:t.id)&&void 0!==i?i:e},t)}).sort((e,t)=>new Date(null==t?void 0:t.timestamp).getTime()-new Date(null==e?void 0:e.timestamp).getTime())))}))}deleteUserExperiment(t){return e(this,void 0,void 0,function*(){if(!t)return Promise.reject("deleteUserExperiment: please provide an experiment id");yield Promise.all([(e=>this.app.database().ref("experiments").child(e).remove())(t),(e=>this.app.functions().httpsCallable("removeRelations")({experimentId:e}))(t)]).catch(()=>{})})}}exports.FirebaseUser=o;
|
|
7
7
|
},{}],"mSvX":[function(require,module,exports) {
|
|
8
|
-
"use strict";var e=this&&this.__awaiter||function(e,t,i,o){return new(i||(i=Promise))(function(n,c){function s(e){try{
|
|
8
|
+
"use strict";var e=this&&this.__awaiter||function(e,t,i,o){return new(i||(i=Promise))(function(n,c){function s(e){try{u(o.next(e))}catch(t){c(t)}}function r(e){try{u(o.throw(e))}catch(t){c(t)}}function u(e){var t;e.done?n(e.value):(t=e.value,t instanceof i?t:new i(function(e){e(t)})).then(s,r)}u((o=o.apply(e,t||[])).next())})},t=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(exports,"__esModule",{value:!0}),exports.createDeviceStore=void 0;const i=t(require("firebase/app")),o=i.default.database.ServerValue.TIMESTAMP,n=(t,i,n)=>{const c=t.database().ref(`devices/${i}`),s=c.child("subscriptions").push().key,r=c.child(`clients/${s}`);let u=[];const a=(e,t)=>c.child(e).set(t),l=(e,t)=>c.child(e).update(t),d=(e="value",t,i)=>{const o=c.child(t).on(e,e=>{i(e.val(),e)});return u.push(()=>{c.child(t).off(e,o)}),o},v=(e,t,i)=>{i?c.child(e).off(t,i):c.child(e).off(t)},f=t.database().ref(".info/connected").on("value",e=>{e.val()&&r.onDisconnect().remove().then(()=>{r.set(o),l("subscriptions",n.get()).then(()=>{n.toList().forEach(e=>{const t=`subscriptions/${e.id}`;c.child(t).onDisconnect().remove()})})})});return u.push(()=>{t.database().ref(".info/connected").off("value",f)}),{set:a,once:(t,i="value")=>e(void 0,void 0,void 0,function*(){return(yield c.child(t).once(i)).val()}),update:l,lastOfChildValue:(t,i,o)=>e(void 0,void 0,void 0,function*(){const e=(yield c.child(t).orderByChild(i).equalTo(o).limitToLast(1).once("value")).val(),[n]=Object.values(e||{});return n||null}),onNamespace:(e,t)=>d("value",e,e=>{t(e)}),offNamespace:(e,t)=>{v(e,"value",t)},dispatchAction:t=>e(void 0,void 0,void 0,function*(){const e=yield((e,t)=>c.child(e).push(t))("actions",t),i=e.key,o=`actions/${i}`;if(e.onDisconnect().remove(),t.responseRequired){const i=t.responseTimeout||6e5,n=new Promise((t,o)=>{const n=setTimeout(()=>{clearTimeout(n),e.remove(),o(`Action response timed out in ${i}ms.`)},i)}),c=new Promise(e=>{((e,t,i,o)=>{d(e,t,n=>{null!==n&&(v(t,e),i(o||n))})})("value",`${o}/response`,e)});return Promise.race([c,n])}return i}),nextMetric:(t,i)=>e(void 0,void 0,void 0,function*(){a(`metrics/${t}`,i)}),onMetric:(e,t)=>{const{atomic:i,metric:o,labels:n}=e,c=i?`metrics/${o}`:`metrics/${o}/${n[0]}`;return d("value",c,e=>{null!==e&&t(e)})},subscribeToMetric:e=>{const t=c.child("subscriptions").push().key,i=`subscriptions/${t}`,o=Object.assign({id:t,clientId:s},e);return a(i,o),c.child(i).onDisconnect().remove(),o},unsubscribeFromMetric:e=>{(e=>{c.child(e).remove()})(`subscriptions/${e.id}`)},removeMetricListener(e,t){const{atomic:i,metric:o,labels:n}=e,c=i?`metrics/${o}`:`metrics/${o}/${n[0]}`;v(c,"value",t)},disconnect(){r.remove(),u.forEach(e=>{e()}),n.toList().filter(e=>e.clientId===s).forEach(e=>{const t=`subscriptions/${e.id}`;c.child(t).remove()})}}};exports.createDeviceStore=n;
|
|
9
9
|
},{}],"KzOJ":[function(require,module,exports) {
|
|
10
|
-
"use strict";var e=this&&this.__awaiter||function(e,t,i,r){return new(i||(i=Promise))(function(n,o){function s(e){try{d(r.next(e))}catch(t){o(t)}}function c(e){try{d(r.throw(e))}catch(t){o(t)}}function d(e){var t;e.done?n(e.value):(t=e.value,t instanceof i?t:new i(function(e){e(t)})).then(s,c)}d((r=r.apply(e,t||[])).next())})},t=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(exports,"__esModule",{value:!0}),exports.FirebaseDevice=void 0;const i=t(require("firebase/
|
|
10
|
+
"use strict";var e=this&&this.__awaiter||function(e,t,i,r){return new(i||(i=Promise))(function(n,o){function s(e){try{d(r.next(e))}catch(t){o(t)}}function c(e){try{d(r.throw(e))}catch(t){o(t)}}function d(e){var t;e.done?n(e.value):(t=e.value,t instanceof i?t:new i(function(e){e(t)})).then(s,c)}d((r=r.apply(e,t||[])).next())})},t=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(exports,"__esModule",{value:!0}),exports.FirebaseDevice=void 0;const i=t(require("firebase/app")),r=require("./deviceStore"),n=i.default.database.ServerValue.TIMESTAMP;class o{constructor({deviceId:e,firebaseApp:t,dependencies:i}){if(!e)throw new Error("No Device ID provided.");this.deviceId=e,this.app=t.app,this.deviceStore=(0,r.createDeviceStore)(this.app,e,i.subscriptionManager)}get timestamp(){return n}dispatchAction(e){return this.deviceStore.dispatchAction(e)}getInfo(){return e(this,void 0,void 0,function*(){return yield this.deviceStore.once("info")})}onNamespace(e,t){return this.deviceStore.onNamespace(e,t)}onceNamespace(t){return e(this,void 0,void 0,function*(){return yield this.deviceStore.once(t)})}offNamespace(e,t){this.deviceStore.offNamespace(e,t)}getTimesync(){return e(this,void 0,void 0,function*(){return(yield this.dispatchAction({command:"timesync",action:"get",responseRequired:!0,responseTimeout:250})).timestamp})}nextMetric(e,t){this.deviceStore.nextMetric(e,t)}onMetric(e,t){return this.deviceStore.onMetric(e,t)}subscribeToMetric(e){return this.deviceStore.subscribeToMetric(Object.assign(Object.assign({},e),{serverType:o.serverType}))}unsubscribeFromMetric(e){this.deviceStore.unsubscribeFromMetric(e)}removeMetricListener(e,t){this.deviceStore.removeMetricListener(e,t)}changeSettings(t){return e(this,void 0,void 0,function*(){return this.deviceStore.update("settings",t)})}getSkill(t){return e(this,void 0,void 0,function*(){return yield this.deviceStore.lastOfChildValue("skills","bundleId",t)})}createBluetoothToken(){var t;return e(this,void 0,void 0,function*(){const[e,i]=yield this.app.functions().httpsCallable("createBluetoothToken")({deviceId:this.deviceId}).then(({data:e})=>[null,null==e?void 0:e.token]).catch(e=>[e,null]);return e?Promise.reject(null!==(t=null==e?void 0:e.message)&&void 0!==t?t:e):i||Promise.reject("Failed to create Bluetooth token.")})}disconnect(){this.deviceStore.disconnect()}}exports.FirebaseDevice=o,o.serverType="firebase";
|
|
11
11
|
},{"./deviceStore":"mSvX"}],"kM30":[function(require,module,exports) {
|
|
12
12
|
"use strict";var e=this&&this.__createBinding||(Object.create?function(e,r,t,i){void 0===i&&(i=t);var o=Object.getOwnPropertyDescriptor(r,t);o&&("get"in o?r.__esModule:!o.writable&&!o.configurable)||(o={enumerable:!0,get:function(){return r[t]}}),Object.defineProperty(e,i,o)}:function(e,r,t,i){void 0===i&&(i=t),e[i]=r[t]}),r=this&&this.__exportStar||function(r,t){for(var i in r)"default"===i||Object.prototype.hasOwnProperty.call(t,i)||e(t,r,i)};Object.defineProperty(exports,"__esModule",{value:!0}),r(require("./FirebaseApp"),exports),r(require("./FirebaseUser"),exports),r(require("./FirebaseDevice"),exports);
|
|
13
13
|
},{"./FirebaseApp":"OERo","./FirebaseUser":"Cc51","./FirebaseDevice":"KzOJ"}],"s7Vt":[function(require,module,exports) {
|
|
@@ -25,7 +25,7 @@ process.env.HMR_PORT=0;process.env.HMR_HOSTNAME="localhost";parcelRequire=functi
|
|
|
25
25
|
},{"../types/status":"Ttuy"}],"qny3":[function(require,module,exports) {
|
|
26
26
|
"use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.filterInternalKeys=void 0;const e=require("rxjs"),r=require("rxjs/operators");function t(){return(0,e.pipe)((0,r.map)(e=>{if(!e)return e;return Object.entries(e).reduce((e,[r,t])=>(r.startsWith("__")||(e[r]=t),e),{})}))}exports.filterInternalKeys=t;
|
|
27
27
|
},{}],"LXvB":[function(require,module,exports) {
|
|
28
|
-
"use strict";var e=this&&this.__awaiter||function(e,i,t,s){return new(t||(t=Promise))(function(r,n){function c(e){try{a(s.next(e))}catch(i){n(i)}}function o(e){try{a(s.throw(e))}catch(i){n(i)}}function a(e){var i;e.done?r(e.value):(i=e.value,i instanceof t?i:new t(function(e){e(i)})).then(c,o)}a((s=s.apply(e,i||[])).next())})};Object.defineProperty(exports,"__esModule",{value:!0}),exports.CloudClient=exports.SERVER_TIMESTAMP=exports.createUser=exports.credentialWithLink=void 0;const i=require("rxjs"),t=require("rxjs"),s=require("rxjs/operators"),r=require("./firebase"),n=require("../timesync"),c=require("../subscriptions/SubscriptionManager"),o=require("../utils/heartbeat"),a=require("../utils/filterInternalKeys");var u=require("./firebase");Object.defineProperty(exports,"credentialWithLink",{enumerable:!0,get:function(){return u.credentialWithLink}}),Object.defineProperty(exports,"createUser",{enumerable:!0,get:function(){return u.createUser}}),Object.defineProperty(exports,"SERVER_TIMESTAMP",{enumerable:!0,get:function(){return u.SERVER_TIMESTAMP}});class h{constructor(e){this._selectedDevice=new i.ReplaySubject(1),this.options=e,this.subscriptionManager=new c.SubscriptionManager,this.firebaseApp=new r.FirebaseApp(e),this.firebaseUser=new r.FirebaseUser(this.firebaseApp),this._selectedDevice.next(void 0),this.status$=(0,o.heartbeatAwareStatus)(this.observeNamespace("status").pipe((0,s.share)())).pipe((0,a.filterInternalKeys)(),(0,s.shareReplay)(1)),this.osVersion$=this.observeNamespace("info/osVersion").pipe((0,s.shareReplay)(1)),this.firebaseUser.onAuthStateChanged().subscribe(e=>{this.user=e}),this.firebaseUser.onUserClaimsChange().subscribe(e=>{this.userClaims=e}),this.onDeviceChange().subscribe(e=>{this.firebaseDevice&&this.firebaseDevice.disconnect(),e&&(this.firebaseDevice=new r.FirebaseDevice({deviceId:e.deviceId,firebaseApp:this.firebaseApp,dependencies:{subscriptionManager:this.subscriptionManager}}),this.options.timesync&&(this.timesync=new n.Timesync({status$:this.status(),getTimesync:this.firebaseDevice.getTimesync.bind(this.firebaseDevice)})))})}onDeviceChange(){return this._selectedDevice.asObservable().pipe((0,s.filter)(e=>void 0!==e))}osVersion(){return this.osVersion$}setAutoSelectedDevice(){return e(this,void 0,void 0,function*(){return this.options.deviceId?yield this.selectDevice(e=>e.find(e=>e.deviceId===this.options.deviceId)):!this.options.deviceId&&this.options.autoSelectDevice?yield this.selectDevice(e=>e[0]):null})}get actions(){return{dispatch:e=>this.firebaseDevice.dispatchAction(e)}}dispatchAction(i){return e(this,void 0,void 0,function*(){return yield this.firebaseDevice.dispatchAction(i)})}disconnect(){return e(this,void 0,void 0,function*(){return this.firebaseApp.disconnect()})}getInfo(){return e(this,void 0,void 0,function*(){return yield this.firebaseDevice.getInfo()})}login(i){return e(this,void 0,void 0,function*(){if(this.user)return Promise.reject("Already logged in.");const e=yield this.firebaseUser.login(i),t=yield this.setAutoSelectedDevice();return Object.assign(Object.assign({},e),{selectedDevice:t})})}logout(){return e(this,void 0,void 0,function*(){return this.firebaseDevice&&this.firebaseDevice.disconnect(),yield this.firebaseUser.logout()})}onAuthStateChanged(){return this.firebaseUser.onAuthStateChanged().pipe((0,s.switchMap)(i=>e(this,void 0,void 0,function*(){if(!i)return null;const e=this.didSelectDevice()?yield this.getSelectedDevice():yield this.setAutoSelectedDevice();return Object.assign(
|
|
28
|
+
"use strict";var e=this&&this.__awaiter||function(e,i,t,s){return new(t||(t=Promise))(function(r,n){function c(e){try{a(s.next(e))}catch(i){n(i)}}function o(e){try{a(s.throw(e))}catch(i){n(i)}}function a(e){var i;e.done?r(e.value):(i=e.value,i instanceof t?i:new t(function(e){e(i)})).then(c,o)}a((s=s.apply(e,i||[])).next())})};Object.defineProperty(exports,"__esModule",{value:!0}),exports.CloudClient=exports.SERVER_TIMESTAMP=exports.createUser=exports.credentialWithLink=void 0;const i=require("rxjs"),t=require("rxjs"),s=require("rxjs/operators"),r=require("./firebase"),n=require("../timesync"),c=require("../subscriptions/SubscriptionManager"),o=require("../utils/heartbeat"),a=require("../utils/filterInternalKeys");var u=require("./firebase");Object.defineProperty(exports,"credentialWithLink",{enumerable:!0,get:function(){return u.credentialWithLink}}),Object.defineProperty(exports,"createUser",{enumerable:!0,get:function(){return u.createUser}}),Object.defineProperty(exports,"SERVER_TIMESTAMP",{enumerable:!0,get:function(){return u.SERVER_TIMESTAMP}});class h{constructor(e){this._selectedDevice=new i.ReplaySubject(1),this.options=e,this.subscriptionManager=new c.SubscriptionManager,this.firebaseApp=new r.FirebaseApp(e),this.firebaseUser=new r.FirebaseUser(this.firebaseApp),this._selectedDevice.next(void 0),this.status$=(0,o.heartbeatAwareStatus)(this.observeNamespace("status").pipe((0,s.share)())).pipe((0,a.filterInternalKeys)(),(0,s.shareReplay)(1)),this.osVersion$=this.observeNamespace("info/osVersion").pipe((0,s.shareReplay)(1)),this.firebaseUser.onAuthStateChanged().subscribe(e=>{this.user=e}),this.firebaseUser.onUserClaimsChange().subscribe(e=>{this.userClaims=e}),this.onDeviceChange().subscribe(e=>{this.firebaseDevice&&this.firebaseDevice.disconnect(),e&&(this.firebaseDevice=new r.FirebaseDevice({deviceId:e.deviceId,firebaseApp:this.firebaseApp,dependencies:{subscriptionManager:this.subscriptionManager}}),this.options.timesync&&(this.timesync=new n.Timesync({status$:this.status(),getTimesync:this.firebaseDevice.getTimesync.bind(this.firebaseDevice)})))})}onDeviceChange(){return this._selectedDevice.asObservable().pipe((0,s.filter)(e=>void 0!==e))}osVersion(){return this.osVersion$}setAutoSelectedDevice(){return e(this,void 0,void 0,function*(){return this.options.deviceId?yield this.selectDevice(e=>e.find(e=>e.deviceId===this.options.deviceId)):!this.options.deviceId&&this.options.autoSelectDevice?yield this.selectDevice(e=>e[0]):null})}get actions(){return{dispatch:e=>this.firebaseDevice.dispatchAction(e)}}dispatchAction(i){return e(this,void 0,void 0,function*(){return yield this.firebaseDevice.dispatchAction(i)})}disconnect(){return e(this,void 0,void 0,function*(){return this.firebaseApp.disconnect()})}getInfo(){return e(this,void 0,void 0,function*(){return yield this.firebaseDevice.getInfo()})}login(i){return e(this,void 0,void 0,function*(){if(this.user)return Promise.reject("Already logged in.");const e=yield this.firebaseUser.login(i),t=yield this.setAutoSelectedDevice();return Object.assign(Object.assign({},e),{selectedDevice:t})})}logout(){return e(this,void 0,void 0,function*(){return this.firebaseDevice&&this.firebaseDevice.disconnect(),yield this.firebaseUser.logout()})}onAuthStateChanged(){return this.firebaseUser.onAuthStateChanged().pipe((0,s.switchMap)(i=>e(this,void 0,void 0,function*(){if(!i)return null;const e=this.didSelectDevice()?yield this.getSelectedDevice():yield this.setAutoSelectedDevice();return Object.assign(i,{selectedDevice:e})})))}getDevices(){return this.firebaseUser.getDevices()}addDevice(e){return this.firebaseUser.addDevice(e)}removeDevice(i){return e(this,void 0,void 0,function*(){const[e,t]=yield this.firebaseUser.removeDevice(i).then(()=>[!1]).catch(e=>[!0,e]);if(e)return Promise.reject(t);const s=yield this.getSelectedDevice();(null==s?void 0:s.deviceId)===i&&this._selectedDevice.next(null)})}transferDevice(i){return e(this,void 0,void 0,function*(){const[e,t]=yield this.firebaseUser.transferDevice(i).then(()=>[!1]).catch(e=>[!0,e]);if(e)return Promise.reject(t);const s=yield this.getSelectedDevice();(null==s?void 0:s.deviceId)===i.deviceId&&this._selectedDevice.next(null)})}onUserDevicesChange(){return this.firebaseUser.onUserDevicesChange()}onUserClaimsChange(){return this.firebaseUser.onUserClaimsChange()}didSelectDevice(){return e(this,void 0,void 0,function*(){return!!(yield this.getSelectedDevice())})}selectDevice(i){return e(this,void 0,void 0,function*(){const e=yield this.getDevices();if(!e)return Promise.reject("Did not find any devices for this user. Make sure your device is claimed by your Neurosity account.");const t="function"==typeof i?i(e):(e=>e.find(e=>{if(!Array.isArray(i))return!1;const[t,s]=i;return JSON.stringify(null==e?void 0:e[t])===JSON.stringify(s)}))(e);return t?(yield this.firebaseUser.hasDevicePermission(t.deviceId))?(this._selectedDevice.next(t),t):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.")})}getSelectedDevice(){return e(this,void 0,void 0,function*(){return yield(0,t.firstValueFrom)(this._selectedDevice)})}status(){return this.status$}observeNamespace(e){const r=()=>(0,t.fromEventPattern)(i=>this.firebaseDevice.onNamespace(e,i),i=>this.firebaseDevice.offNamespace(e,i));return this.onDeviceChange().pipe((0,s.switchMap)(e=>e?r():i.EMPTY))}onceNamespace(i){return e(this,void 0,void 0,function*(){return yield this.firebaseDevice.onceNamespace(i)})}get metrics(){return{next:(e,i)=>{this.firebaseDevice.nextMetric(e,i)},on:(e,i)=>this.firebaseDevice.onMetric(e,i),subscribe:e=>{const i=this.firebaseDevice.subscribeToMetric(e);return this.subscriptionManager.add(i),i},unsubscribe:(e,i)=>{this.subscriptionManager.remove(e),this.firebaseDevice.unsubscribeFromMetric(e),this.firebaseDevice.removeMetricListener(e,i)}}}createAccount(e){return this.firebaseUser.createAccount(e)}deleteAccount(){return this.firebaseUser.deleteAccount()}createBluetoothToken(){return this.firebaseDevice.createBluetoothToken()}createCustomToken(){return this.firebaseUser.createCustomToken()}removeOAuthAccess(){return this.firebaseUser.removeOAuthAccess()}onUserExperiments(){return this.firebaseUser.onUserExperiments()}deleteUserExperiment(e){return this.firebaseUser.deleteUserExperiment(e)}get skills(){return{get:i=>e(this,void 0,void 0,function*(){return this.firebaseDevice.getSkill(i)})}}get timestamp(){return this.options.timesync?this.timesync.timestamp:Date.now()}getTimesyncOffset(){return this.timesync.offset}changeSettings(e){return this.firebaseDevice.changeSettings(e)}goOffline(){this.firebaseApp.goOffline()}goOnline(){this.firebaseApp.goOnline()}__getApp(){return this.firebaseApp.app}}exports.CloudClient=h;
|
|
29
29
|
},{"./firebase":"kM30","../timesync":"CXqr","../subscriptions/SubscriptionManager":"BX8M","../utils/heartbeat":"ImaE","../utils/filterInternalKeys":"qny3"}],"rekm":[function(require,module,exports) {
|
|
30
30
|
"use strict";var t,o;Object.defineProperty(exports,"__esModule",{value:!0}),exports.STREAMING_MODE=exports.STREAMING_TYPE=void 0,function(t){t.WIFI="wifi",t.BLUETOOTH="bluetooth"}(t=exports.STREAMING_TYPE||(exports.STREAMING_TYPE={})),function(t){t.WIFI_ONLY="wifi-only",t.WIFI_WITH_BLUETOOTH_FALLBACK="wifi-with-bluetooth-fallback",t.BLUETOOTH_WITH_WIFI_FALLBACK="bluetooth-with-wifi-fallback"}(o=exports.STREAMING_MODE||(exports.STREAMING_MODE={}));
|
|
31
31
|
},{}],"WDyG":[function(require,module,exports) {
|
|
@@ -83,6 +83,6 @@ process.env.HMR_PORT=0;process.env.HMR_HOSTNAME="localhost";parcelRequire=functi
|
|
|
83
83
|
},{"./BluetoothClient":"fihV","./web/WebBluetoothTransport":"ouKb","./react-native/ReactNativeTransport":"FtS5","./utils/osHasBluetoothSupport":"rH2Y","./types/index":"iwtf"}],"BZP9":[function(require,module,exports) {
|
|
84
84
|
"use strict";var e=this&&this.__createBinding||(Object.create?function(e,t,i,o){void 0===o&&(o=i);var s=Object.getOwnPropertyDescriptor(t,i);s&&("get"in s?t.__esModule:!s.writable&&!s.configurable)||(s={enumerable:!0,get:function(){return t[i]}}),Object.defineProperty(e,o,s)}:function(e,t,i,o){void 0===o&&(o=i),e[o]=t[i]}),t=this&&this.__setModuleDefault||(Object.create?function(e,t){Object.defineProperty(e,"default",{enumerable:!0,value:t})}:function(e,t){e.default=t}),i=this&&this.__importStar||function(i){if(i&&i.__esModule)return i;var o={};if(null!=i)for(var s in i)"default"!==s&&Object.prototype.hasOwnProperty.call(i,s)&&e(o,i,s);return t(o,i),o},o=this&&this.__awaiter||function(e,t,i,o){return new(i||(i=Promise))(function(s,r){function n(e){try{u(o.next(e))}catch(t){r(t)}}function c(e){try{u(o.throw(e))}catch(t){r(t)}}function u(e){var t;e.done?s(e.value):(t=e.value,t instanceof i?t:new i(function(e){e(t)})).then(n,c)}u((o=o.apply(e,t||[])).next())})},s=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(exports,"__esModule",{value:!0}),exports.Notion=exports.Neurosity=void 0;const r=require("rxjs"),n=require("rxjs"),c=require("rxjs/operators"),u=require("rxjs/operators"),l=s(require("fast-deep-equal")),a=require("./api/index"),d=require("./api/index"),h=require("./types/streaming"),m=require("./utils/subscription"),p=require("./types/status"),C=i(require("./utils/errors")),v=i(require("./utils/platform")),g=i(require("./utils/hapticEffects")),f=require("./utils/oauth"),S=require("./utils/oauth"),O=require("./api/https/createOAuthURL"),M=require("./api/https/getOAuthToken"),b=require("./utils/is-node"),_=require("./utils/metrics"),E=require("./api/bluetooth"),T=require("./api/bluetooth/types"),A={timesync:!1,autoSelectDevice:!0,streamingMode:h.STREAMING_MODE.WIFI_ONLY,emulator:!1,emulatorHost:"localhost",emulatorAuthPort:9099,emulatorDatabasePort:9e3,emulatorFunctionsPort:5001,emulatorFirestorePort:8080,emulatorOptions:{}};class D{constructor(e={}){this.streamingMode$=new n.ReplaySubject(1);const{streamingMode:t,bluetoothTransport:i}=e;this.options=Object.freeze(Object.assign(Object.assign({},A),e)),this.cloudClient=new a.CloudClient(this.options),i&&(this.bluetoothClient=new E.BluetoothClient({selectedDevice$:this.onDeviceChange(),osHasBluetoothSupport$:this._osHasBluetoothSupport(),createBluetoothToken:this.createBluetoothToken.bind(this),transport:i})),this._initStreamingMode(t,!!i)}_initStreamingMode(e,t){const i=[h.STREAMING_MODE.BLUETOOTH_WITH_WIFI_FALLBACK,h.STREAMING_MODE.WIFI_WITH_BLUETOOTH_FALLBACK].includes(e),o=!Object.values(h.STREAMING_MODE).includes(e),s=i&&!t;this.isMissingBluetoothTransport=s,!e||o||s?this.streamingMode$.next(h.STREAMING_MODE.WIFI_ONLY):this.streamingMode$.next(e)}_osHasBluetoothSupport(){return(0,r.combineLatest)({selectedDevice:this.onDeviceChange(),osVersion:this.osVersion().pipe((0,c.startWith)(null))}).pipe((0,c.map)(({selectedDevice:e,osVersion:t})=>(0,E.osHasBluetoothSupport)(e,t)))}streamingState(){const e=e=>[p.STATUS.ONLINE,p.STATUS.UPDATING].includes(e);return this.streamingMode$.pipe((0,c.switchMap)(t=>(0,r.combineLatest)({selectedDevice:this.onDeviceChange(),osHasBluetoothSupport:this._osHasBluetoothSupport()}).pipe((0,c.switchMap)(({selectedDevice:i,osHasBluetoothSupport:o})=>{if(!i)return(0,r.of)({connected:!1,streamingMode:t,activeMode:h.STREAMING_TYPE.WIFI});return this.isMissingBluetoothTransport||!o?this.cloudClient.status().pipe((0,c.map)(({state:i})=>({connected:e(i),streamingMode:t,activeMode:h.STREAMING_TYPE.WIFI}))):(0,r.combineLatest)({wifiStatus:this.cloudClient.status(),bluetoothConnection:(null==this?void 0:this.bluetoothClient)?this.bluetoothClient.connection():(0,r.of)(T.BLUETOOTH_CONNECTION.DISCONNECTED)}).pipe((0,c.map)(({wifiStatus:i,bluetoothConnection:o})=>{const s=o===T.BLUETOOTH_CONNECTION.CONNECTED;switch(t){default:case h.STREAMING_MODE.WIFI_ONLY:return{connected:e(i.state),streamingMode:t,activeMode:h.STREAMING_TYPE.WIFI};case h.STREAMING_MODE.WIFI_WITH_BLUETOOTH_FALLBACK:return{connected:e(i.state)||!s?e(i.state):s,streamingMode:t,activeMode:e(i.state)||!s?h.STREAMING_TYPE.WIFI:h.STREAMING_TYPE.BLUETOOTH};case h.STREAMING_MODE.BLUETOOTH_WITH_WIFI_FALLBACK:return{connected:!!s||e(i.state),streamingMode:t,activeMode:s?h.STREAMING_TYPE.BLUETOOTH:h.STREAMING_TYPE.WIFI}}}),(0,u.distinctUntilChanged)((e,t)=>(0,l.default)(e,t)))}))))}_withStreamingModeObservable(e){const{wifi:t,bluetooth:i}=e;return this.streamingState().pipe((0,c.switchMap)(({activeMode:e})=>{switch(e){case h.STREAMING_TYPE.WIFI:return t();case h.STREAMING_TYPE.BLUETOOTH:return i();default:return t()}}))}_withStreamingModePromise(e){return o(this,void 0,void 0,function*(){const{wifi:t,bluetooth:i}=e,{activeMode:o}=yield(0,n.firstValueFrom)(this.streamingState());switch(o){case h.STREAMING_TYPE.WIFI:return yield t();case h.STREAMING_TYPE.BLUETOOTH:return yield i();default:return yield t()}})}get bluetooth(){return null==this?void 0:this.bluetoothClient}_getCloudMetricDependencies(){return{options:this.options,cloudClient:this.cloudClient,onDeviceChange:this.onDeviceChange.bind(this),status:this.status.bind(this)}}login(e){return o(this,void 0,void 0,function*(){return yield this.cloudClient.login(e)})}logout(){return o(this,void 0,void 0,function*(){return yield this.cloudClient.logout()})}__getApp(){return this.cloudClient.__getApp()}onAuthStateChanged(){return this.cloudClient.onAuthStateChanged()}addDevice(e){const[t,i]=(0,f.validateOAuthScopeForFunctionName)(this.cloudClient.userClaims,"addDevice");return t?Promise.reject(i):this.cloudClient.addDevice(e)}removeDevice(e){const[t,i]=(0,f.validateOAuthScopeForFunctionName)(this.cloudClient.userClaims,"removeDevice");return t?Promise.reject(i):this.cloudClient.removeDevice(e)}transferDevice(e){const[t,i]=(0,f.validateOAuthScopeForFunctionName)(this.cloudClient.userClaims,"transferDevice");return t?Promise.reject(i):this.cloudClient.transferDevice(e)}onUserDevicesChange(){const[e,t]=(0,f.validateOAuthScopeForFunctionName)(this.cloudClient.userClaims,"onUserDevicesChange");return e?(0,r.throwError)(()=>t):this.cloudClient.onUserDevicesChange()}onUserClaimsChange(){return this.cloudClient.onUserClaimsChange()}getDevices(){return o(this,void 0,void 0,function*(){return yield this.cloudClient.getDevices()})}selectDevice(e){return o(this,void 0,void 0,function*(){const[t,i]=(0,f.validateOAuthScopeForFunctionName)(this.cloudClient.userClaims,"selectDevice");return t?Promise.reject(i):yield this.cloudClient.selectDevice(e)})}getSelectedDevice(){return o(this,void 0,void 0,function*(){const[e,t]=(0,f.validateOAuthScopeForFunctionName)(this.cloudClient.userClaims,"getSelectedDevice");return e?Promise.reject(t):yield this.cloudClient.getSelectedDevice()})}getInfo(){return o(this,void 0,void 0,function*(){if(!(yield this.cloudClient.didSelectDevice()))return Promise.reject(C.mustSelectDevice);const[e,t]=(0,f.validateOAuthScopeForFunctionName)(this.cloudClient.userClaims,"getInfo");return e?Promise.reject(t):yield this._withStreamingModePromise({wifi:()=>this.cloudClient.getInfo(),bluetooth:()=>this.bluetoothClient.getInfo()})})}onDeviceChange(){const[e,t]=(0,f.validateOAuthScopeForFunctionName)(this.cloudClient.userClaims,"onDeviceChange");return e?(0,r.throwError)(()=>t):this.cloudClient.onDeviceChange()}disconnect(){return o(this,void 0,void 0,function*(){return yield this._withStreamingModePromise({wifi:()=>this.cloudClient.disconnect(),bluetooth:()=>this.bluetoothClient.disconnect()})})}dispatchAction(e){return o(this,void 0,void 0,function*(){if(!(yield this.cloudClient.didSelectDevice()))return Promise.reject(C.mustSelectDevice);const[t,i]=(0,S.validateOAuthScopeForAction)(this.cloudClient.userClaims,e);return t?Promise.reject(i):yield this._withStreamingModePromise({wifi:()=>this.cloudClient.dispatchAction(e),bluetooth:()=>this.bluetoothClient.dispatchAction(e)})})}addMarker(e){return o(this,void 0,void 0,function*(){if(!(yield this.cloudClient.didSelectDevice()))throw C.mustSelectDevice;if(!e)throw new Error(`${C.prefix}A label is required for addMarker`);return yield this._withStreamingModePromise({wifi:()=>this.cloudClient.dispatchAction({command:"marker",action:"add",message:{label:e,timestamp:this.cloudClient.timestamp}}),bluetooth:()=>this.bluetoothClient.addMarker(e)})})}haptics(e){var t;return o(this,void 0,void 0,function*(){if(!(yield this.cloudClient.didSelectDevice()))return Promise.reject(C.mustSelectDevice);const i=null===(t=yield this.getSelectedDevice())||void 0===t?void 0:t.modelVersion;if(!v.supportsHaptics(i))return Promise.reject(C.metricNotSupportedByModel("haptics",i));const o=v.getPlatformHapticMotors(i);for(const t in e){if(!Object.keys(o).includes(t))return Promise.reject(C.locationNotFound(t,i));const s=e[t],r=7;if(s.length>r)return Promise.reject(C.exceededMaxItems(r));o[t]=s}const s={command:"haptics",action:"queue",responseRequired:!0,responseTimeout:1e3,message:{effects:o}};return yield this._withStreamingModePromise({wifi:()=>this.cloudClient.dispatchAction(s),bluetooth:()=>this.bluetoothClient.dispatchAction(s)})})}getHapticEffects(){return g}accelerometer(){const e="accelerometer",[t,i]=(0,f.validateOAuthScopeForFunctionName)(this.cloudClient.userClaims,e);return t?(0,r.throwError)(()=>i):this.onDeviceChange().pipe((0,c.switchMap)(t=>{const i=(null==t?void 0:t.modelVersion)||v.MODEL_VERSION_1;return v.supportsAccel(i)?this._withStreamingModeObservable({wifi:()=>(0,_.getCloudMetric)(this._getCloudMetricDependencies(),{metric:e,labels:(0,m.getLabels)(e),atomic:!0}),bluetooth:()=>this.bluetoothClient.accelerometer()}):(0,r.throwError)(()=>C.metricNotSupportedByModel(e,i))}))}brainwaves(e){const[t,i]=(0,f.validateOAuthScopeForFunctionName)(this.cloudClient.userClaims,"brainwaves");return t?(0,r.throwError)(()=>i):this._withStreamingModeObservable({wifi:()=>(0,_.getCloudMetric)(this._getCloudMetricDependencies(),{metric:"brainwaves",labels:e?[e]:[],atomic:!1}),bluetooth:()=>this.bluetoothClient.brainwaves(e)})}calm(){const[e,t]=(0,f.validateOAuthScopeForFunctionName)(this.cloudClient.userClaims,"calm");return e?(0,r.throwError)(()=>t):this._withStreamingModeObservable({wifi:()=>(0,_.getCloudMetric)(this._getCloudMetricDependencies(),{metric:"awareness",labels:["calm"],atomic:!1}),bluetooth:()=>this.bluetoothClient.calm()})}signalQuality(){const e="signalQuality",[t,i]=(0,f.validateOAuthScopeForFunctionName)(this.cloudClient.userClaims,e);return t?(0,r.throwError)(()=>i):this._withStreamingModeObservable({wifi:()=>(0,_.getCloudMetric)(this._getCloudMetricDependencies(),{metric:e,labels:(0,m.getLabels)(e),atomic:!0}),bluetooth:()=>this.bluetoothClient.signalQuality()})}settings(){const[e,t]=(0,f.validateOAuthScopeForFunctionName)(this.cloudClient.userClaims,"settings");return e?(0,r.throwError)(()=>t):this.cloudClient.observeNamespace("settings")}osVersion(){const[e,t]=(0,f.validateOAuthScopeForFunctionName)(this.cloudClient.userClaims,"osVersion");return e?(0,r.throwError)(()=>t):this.cloudClient.osVersion()}focus(){const[e,t]=(0,f.validateOAuthScopeForFunctionName)(this.cloudClient.userClaims,"focus");return e?(0,r.throwError)(()=>t):this._withStreamingModeObservable({wifi:()=>(0,_.getCloudMetric)(this._getCloudMetricDependencies(),{metric:"awareness",labels:["focus"],atomic:!1}),bluetooth:()=>this.bluetoothClient.focus()})}kinesis(e){const[t,i]=(0,f.validateOAuthScopeForFunctionName)(this.cloudClient.userClaims,"kinesis");return t?(0,r.throwError)(()=>i):(0,_.getCloudMetric)(this._getCloudMetricDependencies(),{metric:"kinesis",labels:e?[e]:[],atomic:!1})}predictions(e){const[t,i]=(0,f.validateOAuthScopeForFunctionName)(this.cloudClient.userClaims,"predictions");return t?(0,r.throwError)(()=>i):(0,_.getCloudMetric)(this._getCloudMetricDependencies(),{metric:"predictions",labels:e?[e]:[],atomic:!1})}status(){const[e,t]=(0,f.validateOAuthScopeForFunctionName)(this.cloudClient.userClaims,"status");return e?(0,r.throwError)(()=>t):this._withStreamingModeObservable({wifi:()=>this.cloudClient.status(),bluetooth:()=>this.bluetoothClient.status()})}changeSettings(e){return o(this,void 0,void 0,function*(){if(!(yield this.cloudClient.didSelectDevice()))return Promise.reject(C.mustSelectDevice);const[t,i]=(0,f.validateOAuthScopeForFunctionName)(this.cloudClient.userClaims,"changeSettings");return t?Promise.reject(i):yield this.cloudClient.changeSettings(e)})}get training(){return{record:e=>o(this,void 0,void 0,function*(){if(!(yield this.cloudClient.didSelectDevice()))throw C.mustSelectDevice;const t=this.cloudClient.user&&"uid"in this.cloudClient.user?this.cloudClient.user.uid:null,i=Object.assign(Object.assign({fit:!1,baseline:!1,timestamp:this.cloudClient.timestamp},e),{userId:t});yield this.cloudClient.actions.dispatch({command:"training",action:"record",message:i})}),stop:e=>o(this,void 0,void 0,function*(){if(!(yield this.cloudClient.didSelectDevice()))throw C.mustSelectDevice;yield this.cloudClient.actions.dispatch({command:"training",action:"stop",message:Object.assign({},e)})}),stopAll:()=>o(this,void 0,void 0,function*(){if(!(yield this.cloudClient.didSelectDevice()))throw C.mustSelectDevice;yield this.cloudClient.actions.dispatch({command:"training",action:"stopAll",message:{}})})}}goOffline(){this.cloudClient.goOffline()}goOnline(){this.cloudClient.goOnline()}createAccount(e){return this.cloudClient.createAccount(e)}deleteAccount(){return this.cloudClient.deleteAccount()}createBluetoothToken(){return this.cloudClient.createBluetoothToken()}createCustomToken(){return this.cloudClient.createCustomToken()}getTimesyncOffset(){return this.options.timesync||console.warn("getTimesyncOffset() requires options.timesync to be true."),this.options.timesync?this.cloudClient.getTimesyncOffset():0}createOAuthURL(e){return b.isNode?(0,O.createOAuthURL)(e,this.options):Promise.reject(new Error(`${C.prefix}the createOAuthURL method must be used on the server side (node.js) for security reasons.`))}getOAuthToken(e){return b.isNode?(0,M.getOAuthToken)(e,this.options):Promise.reject(new Error(`${C.prefix}the getOAuthToken method must be used on the server side (node.js) for security reasons.`))}removeOAuthAccess(){return this.cloudClient.removeOAuthAccess()}onUserExperiments(){return this.cloudClient.onUserExperiments()}deleteUserExperiment(e){return this.cloudClient.deleteUserExperiment(e)}}exports.Neurosity=D,D.credentialWithLink=d.credentialWithLink,D.createUser=a.createUser,D.SERVER_TIMESTAMP=d.SERVER_TIMESTAMP;class w extends D{constructor(e={}){super(e),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()")}}exports.Notion=w;
|
|
85
85
|
},{"./api/index":"LXvB","./types/streaming":"rekm","./utils/subscription":"yLLB","./types/status":"Ttuy","./utils/errors":"WDyG","./utils/platform":"wAkn","./utils/hapticEffects":"lLai","./utils/oauth":"xIH5","./api/https/createOAuthURL":"MDrB","./api/https/getOAuthToken":"nfg4","./utils/is-node":"vsps","./utils/metrics":"DCuD","./api/bluetooth":"TICO","./api/bluetooth/types":"iwtf"}],"QCba":[function(require,module,exports) {
|
|
86
|
-
"use strict";var e=this&&this.__createBinding||(Object.create?function(e,t,r,i){void 0===i&&(i=r);var o=Object.getOwnPropertyDescriptor(t,r);o&&("get"in o?t.__esModule:!o.writable&&!o.configurable)||(o={enumerable:!0,get:function(){return t[r]}}),Object.defineProperty(e,i,o)}:function(e,t,r,i){void 0===i&&(i=r),e[i]=t[r]}),t=this&&this.__exportStar||function(t,r){for(var i in t)"default"===i||Object.prototype.hasOwnProperty.call(r,i)||e(r,t,i)};Object.defineProperty(exports,"__esModule",{value:!0}),t(require("./Neurosity"),exports),t(require("./api/bluetooth"),exports);
|
|
87
|
-
},{"./Neurosity":"BZP9","./api/bluetooth":"TICO"}]},{},["QCba"], null)
|
|
86
|
+
"use strict";var e=this&&this.__createBinding||(Object.create?function(e,t,r,i){void 0===i&&(i=r);var o=Object.getOwnPropertyDescriptor(t,r);o&&("get"in o?t.__esModule:!o.writable&&!o.configurable)||(o={enumerable:!0,get:function(){return t[r]}}),Object.defineProperty(e,i,o)}:function(e,t,r,i){void 0===i&&(i=r),e[i]=t[r]}),t=this&&this.__exportStar||function(t,r){for(var i in t)"default"===i||Object.prototype.hasOwnProperty.call(r,i)||e(r,t,i)};Object.defineProperty(exports,"__esModule",{value:!0}),t(require("./Neurosity"),exports),t(require("./api/bluetooth"),exports),t(require("./types/streaming"),exports);
|
|
87
|
+
},{"./Neurosity":"BZP9","./api/bluetooth":"TICO","./types/streaming":"rekm"}]},{},["QCba"], null)
|
|
88
88
|
//# sourceMappingURL=/index.js.map
|