const app = require('../../../../app') const { waitForDb } = require('../../../../app/js/mongodb') require('@overleaf/logger').logger.level('error') const settings = require('@overleaf/settings') module.exports = { running: false, initing: false, callbacks: [], ensureRunning(callback) { if (callback == null) { callback = function () {} } if (this.running) { return callback() } else if (this.initing) { return this.callbacks.push(callback) } this.initing = true this.callbacks.push(callback) waitForDb().then(() => { return app.listen(settings.internal.docstore.port, 'localhost', error => { if (error != null) { throw error } this.running = true return (() => { const result = [] for (callback of Array.from(this.callbacks)) { result.push(callback()) } return result })() }) }) }, }