decaffeinate: convert individual files to js

This commit is contained in:
Simon Detheridge 2020-02-16 14:03:43 +00:00
parent b8aa04b9ff
commit 421d6dabab
2 changed files with 105 additions and 73 deletions

View file

@ -1,67 +1,86 @@
Metrics = require "metrics-sharelatex"
Metrics.initialize("docstore")
Settings = require "settings-sharelatex"
logger = require "logger-sharelatex"
express = require "express"
bodyParser = require "body-parser"
Errors = require "./app/js/Errors"
HttpController = require "./app/js/HttpController"
Path = require "path"
/*
* decaffeinate suggestions:
* DS102: Remove unnecessary code created because of implicit returns
* DS207: Consider shorter variations of null checks
* Full docs: https://github.com/decaffeinate/decaffeinate/blob/master/docs/suggestions.md
*/
const Metrics = require("metrics-sharelatex");
Metrics.initialize("docstore");
const Settings = require("settings-sharelatex");
const logger = require("logger-sharelatex");
const express = require("express");
const bodyParser = require("body-parser");
const Errors = require("./app/js/Errors");
const HttpController = require("./app/js/HttpController");
const Path = require("path");
logger.initialize("docstore")
Metrics.event_loop?.monitor(logger)
logger.initialize("docstore");
if (Metrics.event_loop != null) {
Metrics.event_loop.monitor(logger);
}
app = express()
const app = express();
app.use Metrics.http.monitor(logger)
app.use(Metrics.http.monitor(logger));
Metrics.injectMetricsRoute(app)
Metrics.injectMetricsRoute(app);
app.param 'project_id', (req, res, next, project_id) ->
if project_id?.match /^[0-9a-f]{24}$/
next()
else
next new Error("invalid project id")
app.param('project_id', function(req, res, next, project_id) {
if ((project_id != null ? project_id.match(/^[0-9a-f]{24}$/) : undefined)) {
return next();
} else {
return next(new Error("invalid project id"));
}
});
app.param 'doc_id', (req, res, next, doc_id) ->
if doc_id?.match /^[0-9a-f]{24}$/
next()
else
next new Error("invalid doc id")
app.param('doc_id', function(req, res, next, doc_id) {
if ((doc_id != null ? doc_id.match(/^[0-9a-f]{24}$/) : undefined)) {
return next();
} else {
return next(new Error("invalid doc id"));
}
});
Metrics.injectMetricsRoute(app)
Metrics.injectMetricsRoute(app);
app.get '/project/:project_id/doc', HttpController.getAllDocs
app.get '/project/:project_id/ranges', HttpController.getAllRanges
app.get '/project/:project_id/doc/:doc_id', HttpController.getDoc
app.get '/project/:project_id/doc/:doc_id/raw', HttpController.getRawDoc
# Add 64kb overhead for the JSON encoding, and double the size to allow for ranges in the json payload
app.post '/project/:project_id/doc/:doc_id', bodyParser.json(limit: (Settings.max_doc_length + 64 * 1024) * 2), HttpController.updateDoc
app.del '/project/:project_id/doc/:doc_id', HttpController.deleteDoc
app.get('/project/:project_id/doc', HttpController.getAllDocs);
app.get('/project/:project_id/ranges', HttpController.getAllRanges);
app.get('/project/:project_id/doc/:doc_id', HttpController.getDoc);
app.get('/project/:project_id/doc/:doc_id/raw', HttpController.getRawDoc);
// Add 64kb overhead for the JSON encoding, and double the size to allow for ranges in the json payload
app.post('/project/:project_id/doc/:doc_id', bodyParser.json({limit: (Settings.max_doc_length + (64 * 1024)) * 2}), HttpController.updateDoc);
app.del('/project/:project_id/doc/:doc_id', HttpController.deleteDoc);
app.post '/project/:project_id/archive', HttpController.archiveAllDocs
app.post '/project/:project_id/unarchive', HttpController.unArchiveAllDocs
app.post '/project/:project_id/destroy', HttpController.destroyAllDocs
app.post('/project/:project_id/archive', HttpController.archiveAllDocs);
app.post('/project/:project_id/unarchive', HttpController.unArchiveAllDocs);
app.post('/project/:project_id/destroy', HttpController.destroyAllDocs);
app.get "/health_check", HttpController.healthCheck
app.get("/health_check", HttpController.healthCheck);
app.get '/status', (req, res)->
res.send('docstore is alive')
app.get('/status', (req, res) => res.send('docstore is alive'));
app.use (error, req, res, next) ->
logger.error err: error, req:req, "request errored"
if error instanceof Errors.NotFoundError
res.send 404
else
res.send(500, "Oops, something went wrong")
app.use(function(error, req, res, next) {
logger.error({err: error, req}, "request errored");
if (error instanceof Errors.NotFoundError) {
return res.send(404);
} else {
return res.send(500, "Oops, something went wrong");
}
});
port = Settings.internal.docstore.port
host = Settings.internal.docstore.host
const {
port
} = Settings.internal.docstore;
const {
host
} = Settings.internal.docstore;
if !module.parent # Called directly
app.listen port, host, (error) ->
throw error if error?
logger.info "Docstore starting up, listening on #{host}:#{port}"
if (!module.parent) { // Called directly
app.listen(port, host, function(error) {
if (error != null) { throw error; }
return logger.info(`Docstore starting up, listening on ${host}:${port}`);
});
}
module.exports = app
module.exports = app;

View file

@ -1,31 +1,44 @@
http = require('http')
http.globalAgent.maxSockets = 300
/*
* decaffeinate suggestions:
* DS207: Consider shorter variations of null checks
* Full docs: https://github.com/decaffeinate/decaffeinate/blob/master/docs/suggestions.md
*/
const http = require('http');
http.globalAgent.maxSockets = 300;
Settings =
internal:
docstore:
port: 3016
host: process.env['LISTEN_ADDRESS'] or "localhost"
const Settings = {
internal: {
docstore: {
port: 3016,
host: process.env['LISTEN_ADDRESS'] || "localhost"
}
},
mongo:{}
mongo:{},
docstore:
healthCheck:
docstore: {
healthCheck: {
project_id: process.env['HEALTH_CHECK_PROJECT_ID']
}
},
max_doc_length: 2 * 1024 * 1024 # 2mb
max_doc_length: 2 * 1024 * 1024 // 2mb
};
if process.env['MONGO_CONNECTION_STRING']?
Settings.mongo.url = process.env['MONGO_CONNECTION_STRING']
else if process.env['MONGO_HOST']?
Settings.mongo.url = "mongodb://#{process.env['MONGO_HOST']}/sharelatex"
else
Settings.mongo.url = "mongodb://127.0.0.1/sharelatex"
if (process.env['MONGO_CONNECTION_STRING'] != null) {
Settings.mongo.url = process.env['MONGO_CONNECTION_STRING'];
} else if (process.env['MONGO_HOST'] != null) {
Settings.mongo.url = `mongodb://${process.env['MONGO_HOST']}/sharelatex`;
} else {
Settings.mongo.url = "mongodb://127.0.0.1/sharelatex";
}
if process.env['AWS_ACCESS_KEY_ID']? and process.env['AWS_SECRET_ACCESS_KEY']? and process.env['AWS_BUCKET']?
Settings.docstore.s3 =
key: process.env['AWS_ACCESS_KEY_ID']
secret: process.env['AWS_SECRET_ACCESS_KEY']
if ((process.env['AWS_ACCESS_KEY_ID'] != null) && (process.env['AWS_SECRET_ACCESS_KEY'] != null) && (process.env['AWS_BUCKET'] != null)) {
Settings.docstore.s3 = {
key: process.env['AWS_ACCESS_KEY_ID'],
secret: process.env['AWS_SECRET_ACCESS_KEY'],
bucket: process.env['AWS_BUCKET']
};
}
module.exports = Settings
module.exports = Settings;