UNPKG

7.01 kBSource Map (JSON)View Raw
1{"version":3,"sources":["../src/DbModule.js"],"names":["DbModule","config","keepAlive","useUnifiedTopology","useNewUrlParser","connectTimeoutMS","provider","client","Mongoose","reconnectios","validOptionNames","options","uri","getOptions","Err","debug","log","trace","Promise","connection","on","err","error","interval","warn","Bluebird","delay","setTimeout","reconnect","bind","set","close","disconnect","stop","run","resolve","reject","connect","then","db","command","ping","operationTime","Module"],"mappings":"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","sourcesContent":["import Err from '@lskjs/err';\nimport Module from '@lskjs/module';\nimport maskUriPassword from '@lskjs/utils/maskUriPassword';\nimport Bluebird from 'bluebird';\nimport pick from 'lodash/pick';\nimport { Mongoose } from 'mongoose';\n\nimport { validOptionNames } from './mongo/validOptionNames';\n\n// abstract\nexport class DbModule extends Module {\n config = {\n keepAlive: true,\n useUnifiedTopology: true,\n useNewUrlParser: true,\n // autoReconnect: true,\n // reconnectTries: __DEV__ ? 10000 : 30,\n // reconnectInterval: __DEV__ ? 30000 : 1000,\n connectTimeoutMS: 5000,\n // sets the delay between every retry (milliseconds)\n };\n\n provider = 'mongo';\n client = 'mongoose';\n Mongoose = Mongoose;\n reconnectios = 0;\n\n getOptions() {\n return {\n ...pick(this.config, validOptionNames),\n ...(this.config.options || {}),\n };\n }\n async init() {\n await super.init();\n const { uri } = this.config;\n const options = this.getOptions();\n if (!uri) throw new Err('!uri');\n if (this.debug) this.log.trace('config', maskUriPassword(uri), options); // finalOptions\n\n // eslint-disable-next-line no-shadow\n const { Mongoose } = this;\n this.client = new Mongoose();\n this.client.Promise = Promise;\n this.client.connection.on('connected', () => {\n if (this.debug) this.log.trace('connected');\n this.reconnectios = 0;\n });\n this.client.connection.on('error', async (err) => {\n this.log.error('error', err);\n const interval = this.reconnectios++ * 2000 + 1000; // eslint-disable-line no-plusplus\n if (this.debug) this.log.warn(`reconnect [delay] ${interval}ms`);\n await Bluebird.delay(interval);\n setTimeout(this.reconnect.bind(this), interval);\n });\n this.client.connection.on('disconnected', () => {\n if (this.debug) this.log.trace('disconnected');\n });\n this.client.set('debug', this.debug || false);\n return this.client;\n }\n\n async stop() {\n await super.stop();\n if (this.client) {\n if (this.client.connection) this.client.connection.close();\n this.client.disconnect();\n } else {\n this.log.warn('!client', 'cannot client.disconnect');\n }\n\n return Bluebird.delay(10);\n }\n\n async reconnect() {\n if (this.debug) this.log.trace('reconnect');\n if (this.client) {\n this.client.stop();\n this.client.run();\n } else {\n this.log.warn('!client', 'cannot client.stop and client.run');\n }\n }\n\n async run() {\n await super.run();\n this.reconnectios = 0;\n const { uri } = this.config;\n const options = this.getOptions();\n const connection = await new Promise((resolve, reject) => this.client.connect(uri, options).then(resolve, reject));\n this.log.debug('[ready]', maskUriPassword(uri));\n return connection;\n }\n async healthcheck() {\n if (!this.client) throw '!client';\n return this.client.connection.db.command({ ping: 1 }).then(({ operationTime }) => operationTime);\n }\n}\n\nexport default DbModule;\n"],"file":"DbModule.js"}
\No newline at end of file