| 123456789101112131415161718192021222324252627282930313233343536373839404142 |
- import ObjectPersistor from '@overleaf/object-persistor'
- import Settings from '@overleaf/settings'
- import { promisify } from 'node:util'
- import App from '../../../app.js'
- import FileHandler from '../../../app/js/FileHandler.js'
- class FilestoreApp {
- async runServer() {
- if (!this.server) {
- await new Promise((resolve, reject) => {
- this.server = App.listen(
- Settings.internal.filestore.port,
- '127.0.0.1',
- err => {
- if (err) {
- return reject(err)
- }
- resolve()
- }
- )
- })
- }
- this.persistor = ObjectPersistor({
- ...Settings.filestore,
- paths: Settings.path,
- })
- FileHandler._TESTONLYSwapPersistorManager(this.persistor)
- }
- async stop() {
- if (!this.server) return
- const closeServer = promisify(this.server.close).bind(this.server)
- try {
- await closeServer()
- } finally {
- delete this.server
- }
- }
- }
- export default FilestoreApp
|