UNPKG

mongo-seeding

Version:

The ultimate Node.js library for populating your MongoDB database.

73 lines 2.97 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.DatabaseConnector = void 0; const mongodb_1 = require("mongodb"); const _1 = require("."); /** * Provides functionality to manage connection to a MongoDB database. */ class DatabaseConnector { /** * Constructs the `DatabaseConnector` object. * * @param reconnectTimeoutMillis Reconnect timeout in milliseconds. Ignored when custom MongoClientOptions are passed. * @param mongoClientOptions Optional Mongo Client options * @param log Optional logger */ constructor(reconnectTimeoutMillis, mongoClientOptions, log) { this.clientOptions = mongoClientOptions != null ? mongoClientOptions : Object.assign(Object.assign({}, DatabaseConnector.DEFAULT_CLIENT_OPTIONS), { connectTimeoutMS: reconnectTimeoutMillis }); this.log = log ? log : () => { // do nothing }; } /** * Connects to database. * * @param connectionString Database connection string */ connect(connectionString) { return __awaiter(this, void 0, void 0, function* () { const mongoClient = new mongodb_1.MongoClient(connectionString, this.clientOptions); this.log(`Connecting to ${this.maskUriCredentials(connectionString)}...`); yield mongoClient.connect(); this.log('Connection with database established.'); return new _1.Database(mongoClient); }); } /** * Detects database connection credentials and masks them, replacing with masked URI credentials token. * * @param uri Database connection URI */ maskUriCredentials(uri) { if (!uri.includes('@')) { return uri; } const creds = uri.substring(uri.indexOf('://') + 3, uri.indexOf('@')); return uri.replace(creds, DatabaseConnector.MASKED_URI_CREDENTIALS); } } exports.DatabaseConnector = DatabaseConnector; /** * Masked URI credentials token. */ DatabaseConnector.MASKED_URI_CREDENTIALS = '[secure]'; DatabaseConnector.DEFAULT_CLIENT_OPTIONS = { ignoreUndefined: true, connectTimeoutMS: 10000, }; //# sourceMappingURL=database-connector.js.map