@a11ywatch/core
Version:
a11ywatch central API
114 lines • 5.28 kB
JavaScript
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
;