UNPKG

@a11ywatch/core

Version:
114 lines 5.28 kB
"use strict"; var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) { function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); } return new (P || (P = Promise))(function (resolve, reject) { function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } } function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } } function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); } step((generator = generator.apply(thisArg, _arguments || [])).next()); }); }; Object.defineProperty(exports, "__esModule", { value: true }); exports.pageSpeedCollection = exports.countersCollection = exports.historyCollection = exports.actionsCollection = exports.websitesCollection = exports.usersCollection = exports.pagesCollection = exports.issuesCollection = exports.analyticsCollection = exports.closeDbConnection = exports.initDbConnection = exports.pollTillConnected = exports.connect = exports.connected = exports.client = exports.db = void 0; const mongodb_1 = require("mongodb"); const events_1 = require("events"); const config_1 = require("../config/config"); const mock_db_1 = require("./mock-db"); let client; exports.client = client; let connected = false; exports.connected = connected; let connectionState = "init"; let db = null; exports.db = db; const dbEmitter = new (class DBEmitter extends events_1.EventEmitter { })(); const createClient = (dbconnection) => __awaiter(void 0, void 0, void 0, function* () { let mclient; return new Promise((resolve) => { try { mclient = new mongodb_1.MongoClient(dbconnection || config_1.config.DB_URL); exports.connected = connected = true; } catch (_) { console.warn("MongoDB not established. Start mongo on port 27017 to persist data and restart or use the `initDbConnection` method."); } resolve(mclient); }); }); let pagesCollection = mock_db_1.mdb; exports.pagesCollection = pagesCollection; let analyticsCollection = mock_db_1.mdb; exports.analyticsCollection = analyticsCollection; let issuesCollection = mock_db_1.mdb; exports.issuesCollection = issuesCollection; let usersCollection = mock_db_1.mdb; exports.usersCollection = usersCollection; let websitesCollection = mock_db_1.mdb; exports.websitesCollection = websitesCollection; let actionsCollection = mock_db_1.mdb; exports.actionsCollection = actionsCollection; let historyCollection = mock_db_1.mdb; exports.historyCollection = historyCollection; let countersCollection = mock_db_1.mdb; exports.countersCollection = countersCollection; let pageSpeedCollection = mock_db_1.mdb; exports.pageSpeedCollection = pageSpeedCollection; const initDbConnection = (dbconnection) => __awaiter(void 0, void 0, void 0, function* () { exports.client = client = yield createClient(dbconnection); if (client) { try { exports.client = client = yield client.connect(); } catch (e) { console.error(e); } if (client) { exports.db = db = client.db(config_1.config.DB_NAME); exports.analyticsCollection = analyticsCollection = db.collection("Analytics"); exports.pagesCollection = pagesCollection = db.collection("Pages"); exports.issuesCollection = issuesCollection = db.collection("Issues"); exports.usersCollection = usersCollection = db.collection("Users"); exports.websitesCollection = websitesCollection = db.collection("Websites"); exports.actionsCollection = actionsCollection = db.collection("PageActions"); exports.historyCollection = historyCollection = db.collection("History"); exports.countersCollection = countersCollection = db.collection("Counters"); exports.pageSpeedCollection = pageSpeedCollection = db.collection("PageSpeed"); } } if (connectionState !== "determined") { dbEmitter.emit("event:init"); connectionState = "determined"; } }); exports.initDbConnection = initDbConnection; const connect = (collectionType = "Websites") => [ db ? db.collection(collectionType) : mock_db_1.mdb, client, ]; exports.connect = connect; const closeDbConnection = () => __awaiter(void 0, void 0, void 0, function* () { if (connected) { client && (yield client.close()); exports.connected = connected = false; } }); exports.closeDbConnection = closeDbConnection; const pollTillConnected = () => __awaiter(void 0, void 0, void 0, function* () { return new Promise((resolve) => { if (!connected && connectionState !== "determined") { connectionState = "establishing"; const maxTimeout = setTimeout(() => { resolve(connected); }, 55); dbEmitter.once("event:init", () => { maxTimeout && clearTimeout(maxTimeout); resolve(connected); }); return; } resolve(connected); }); }); exports.pollTillConnected = pollTillConnected; //# sourceMappingURL=client.js.map