@neurosity/sdk 6.5.4-next.0 → 6.5.4
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 +22665 -35025
- package/dist/browser/neurosity.js +42 -56
- 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/electron/index.js +5 -5
- 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/neurosity.mjs +22668 -35028
- package/dist/examples/neurosity.iife.js +22665 -35025
- package/dist/examples/neurosity.js +42 -56
- package/dist/examples/neurosity.mjs +22668 -35028
- 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/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) {
|