@neurosity/sdk
Version:
Neurosity SDK
72 lines (71 loc) • 2.67 kB
JavaScript
;
var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", { value: true });
exports.FirebaseApp = exports.__firebase = exports.SERVER_TIMESTAMP = void 0;
const app_1 = __importDefault(require("firebase/app"));
require("firebase/database");
require("firebase/auth");
require("firebase/functions");
require("firebase/firestore");
const config_1 = require("./config");
exports.SERVER_TIMESTAMP = app_1.default.database.ServerValue.TIMESTAMP;
exports.__firebase = app_1.default;
/**
* @hidden
*/
class FirebaseApp {
constructor(options) {
this.app = this.getApp(options.deviceId);
this.standalone = this.app.name === options.deviceId;
if (options.emulator) {
this.connectEmulators(options);
}
}
getApp(deviceId) {
const moduleApps = app_1.default.apps;
const browserApps = typeof window !== "undefined" &&
"firebase" in window &&
"apps" in window.firebase
? window["firebase"]["apps"]
: [];
const neurosityApp = [...moduleApps, ...browserApps].find((app) => app.name === "[DEFAULT]" &&
app.options.databaseURL === config_1.config.databaseURL);
if (neurosityApp) {
return neurosityApp;
}
if (deviceId) {
const neurosityAppName = deviceId;
const neurosityApp = moduleApps.find((app) => app.name === neurosityAppName);
return neurosityApp
? neurosityApp
: app_1.default.initializeApp(config_1.config, neurosityAppName);
}
return app_1.default.initializeApp(config_1.config);
}
connectEmulators(options) {
const { emulatorHost, emulatorAuthPort, emulatorDatabasePort, emulatorFunctionsPort, emulatorFirestorePort, emulatorOptions } = options;
this.app.auth().useEmulator(`http://${emulatorHost}:${emulatorAuthPort}`);
this.app
.database()
.useEmulator(emulatorHost, emulatorDatabasePort, emulatorOptions);
this.app.functions().useEmulator(emulatorHost, emulatorFunctionsPort);
this.app
.firestore()
.useEmulator(emulatorHost, emulatorFirestorePort, emulatorOptions);
}
goOnline() {
this.app.database().goOnline();
}
goOffline() {
this.app.database().goOffline();
}
disconnect() {
if (this.standalone) {
return this.app.delete();
}
return Promise.resolve();
}
}
exports.FirebaseApp = FirebaseApp;