UNPKG

@neurosity/sdk

Version:
72 lines (71 loc) 2.67 kB
"use strict"; 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;