From 0a12cee07179ad1f8739bfb584e11261f313c5d6 Mon Sep 17 00:00:00 2001 From: decaffeinate Date: Thu, 20 Dec 2018 14:13:53 -0500 Subject: [PATCH] decaffeinate: Convert MessageFormatter.coffee and 6 other files to JS --- .../Features/Messages/MessageFormatter.js | 102 +++++--- .../Messages/MessageHttpController.js | 239 ++++++++++-------- .../Features/Messages/MessageManager.js | 146 ++++++----- .../coffee/Features/Threads/ThreadManager.js | 125 +++++---- services/chat/app/coffee/mongojs.js | 11 +- services/chat/app/coffee/router.js | 67 +++-- services/chat/app/coffee/server.js | 77 +++--- 7 files changed, 452 insertions(+), 315 deletions(-) diff --git a/services/chat/app/coffee/Features/Messages/MessageFormatter.js b/services/chat/app/coffee/Features/Messages/MessageFormatter.js index 8f3fdf3e04..eacfa41c1c 100644 --- a/services/chat/app/coffee/Features/Messages/MessageFormatter.js +++ b/services/chat/app/coffee/Features/Messages/MessageFormatter.js @@ -1,46 +1,70 @@ -module.exports = MessageFormatter = - formatMessageForClientSide: (message) -> - if message._id? - message.id = message._id.toString() - delete message._id - formattedMessage = - id: message.id - content: message.content - timestamp: message.timestamp +/* + * decaffeinate suggestions: + * DS101: Remove unnecessary use of Array.from + * 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 + */ +let MessageFormatter; +module.exports = (MessageFormatter = { + formatMessageForClientSide(message) { + if (message._id != null) { + message.id = message._id.toString(); + delete message._id; + } + const formattedMessage = { + id: message.id, + content: message.content, + timestamp: message.timestamp, user_id: message.user_id - if message.edited_at? - formattedMessage.edited_at = message.edited_at - return formattedMessage + }; + if (message.edited_at != null) { + formattedMessage.edited_at = message.edited_at; + } + return formattedMessage; + }, - formatMessagesForClientSide: (messages) -> - (@formatMessageForClientSide(message) for message in messages) + formatMessagesForClientSide(messages) { + return (Array.from(messages).map((message) => this.formatMessageForClientSide(message))); + }, - groupMessagesByThreads: (rooms, messages) -> - rooms_by_id = {} - for room in rooms - rooms_by_id[room._id.toString()] = room + groupMessagesByThreads(rooms, messages) { + let room, thread; + const rooms_by_id = {}; + for (room of Array.from(rooms)) { + rooms_by_id[room._id.toString()] = room; + } - threads = {} - getThread = (room) -> - thread_id = room.thread_id.toString() - if threads[thread_id]? - return threads[thread_id] - else - thread = { messages: [] } - if room.resolved? - thread.resolved = true - thread.resolved_at = room.resolved.ts - thread.resolved_by_user_id = room.resolved.user_id - threads[thread_id] = thread - return thread + const threads = {}; + const getThread = function(room) { + const thread_id = room.thread_id.toString(); + if (threads[thread_id] != null) { + return threads[thread_id]; + } else { + const thread = { messages: [] }; + if (room.resolved != null) { + thread.resolved = true; + thread.resolved_at = room.resolved.ts; + thread.resolved_by_user_id = room.resolved.user_id; + } + threads[thread_id] = thread; + return thread; + } + }; - for message in messages - room = rooms_by_id[message.room_id.toString()] - if room? - thread = getThread(room) - thread.messages.push MessageFormatter.formatMessageForClientSide(message) + for (let message of Array.from(messages)) { + room = rooms_by_id[message.room_id.toString()]; + if (room != null) { + thread = getThread(room); + thread.messages.push(MessageFormatter.formatMessageForClientSide(message)); + } + } - for thread_id, thread of threads - thread.messages.sort (a,b) -> a.timestamp - b.timestamp + for (let thread_id in threads) { + thread = threads[thread_id]; + thread.messages.sort((a,b) => a.timestamp - b.timestamp); + } - return threads \ No newline at end of file + return threads; + } +}); \ No newline at end of file diff --git a/services/chat/app/coffee/Features/Messages/MessageHttpController.js b/services/chat/app/coffee/Features/Messages/MessageHttpController.js index 4a870cd2fc..c2144e3885 100644 --- a/services/chat/app/coffee/Features/Messages/MessageHttpController.js +++ b/services/chat/app/coffee/Features/Messages/MessageHttpController.js @@ -1,112 +1,151 @@ -logger = require "logger-sharelatex" -metrics = require "metrics-sharelatex" -MessageManager = require "./MessageManager" -MessageFormatter = require "./MessageFormatter" -ThreadManager = require "../Threads/ThreadManager" -{ObjectId} = require "../../mongojs" +/* + * 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 + */ +let MessageHttpController; +const logger = require("logger-sharelatex"); +const metrics = require("metrics-sharelatex"); +const MessageManager = require("./MessageManager"); +const MessageFormatter = require("./MessageFormatter"); +const ThreadManager = require("../Threads/ThreadManager"); +const {ObjectId} = require("../../mongojs"); -module.exports = MessageHttpController = - DEFAULT_MESSAGE_LIMIT: 50 - MAX_MESSAGE_LENGTH: 10 * 1024 # 10kb, about 1,500 words +module.exports = (MessageHttpController = { + DEFAULT_MESSAGE_LIMIT: 50, + MAX_MESSAGE_LENGTH: 10 * 1024, // 10kb, about 1,500 words - getGlobalMessages: (req, res, next) -> - MessageHttpController._getMessages(ThreadManager.GLOBAL_THREAD, req, res, next) + getGlobalMessages(req, res, next) { + return MessageHttpController._getMessages(ThreadManager.GLOBAL_THREAD, req, res, next); + }, - sendGlobalMessage: (req, res, next) -> - MessageHttpController._sendMessage(ThreadManager.GLOBAL_THREAD, req, res, next) + sendGlobalMessage(req, res, next) { + return MessageHttpController._sendMessage(ThreadManager.GLOBAL_THREAD, req, res, next); + }, - sendThreadMessage: (req, res, next) -> - MessageHttpController._sendMessage(req.params.thread_id, req, res, next) + sendThreadMessage(req, res, next) { + return MessageHttpController._sendMessage(req.params.thread_id, req, res, next); + }, - getAllThreads: (req, res, next) -> - {project_id} = req.params - logger.log {project_id}, "getting all threads" - ThreadManager.findAllThreadRooms project_id, (error, rooms) -> - return next(error) if error? - room_ids = rooms.map (r) -> r._id - MessageManager.findAllMessagesInRooms room_ids, (error, messages) -> - return next(error) if error? - threads = MessageFormatter.groupMessagesByThreads rooms, messages - res.json threads + getAllThreads(req, res, next) { + const {project_id} = req.params; + logger.log({project_id}, "getting all threads"); + return ThreadManager.findAllThreadRooms(project_id, function(error, rooms) { + if (error != null) { return next(error); } + const room_ids = rooms.map(r => r._id); + return MessageManager.findAllMessagesInRooms(room_ids, function(error, messages) { + if (error != null) { return next(error); } + const threads = MessageFormatter.groupMessagesByThreads(rooms, messages); + return res.json(threads); + }); + }); + }, - resolveThread: (req, res, next) -> - {project_id, thread_id} = req.params - {user_id} = req.body - logger.log {user_id, project_id, thread_id}, "marking thread as resolved" - ThreadManager.resolveThread project_id, thread_id, user_id, (error) -> - return next(error) if error? - res.send 204 # No content + resolveThread(req, res, next) { + const {project_id, thread_id} = req.params; + const {user_id} = req.body; + logger.log({user_id, project_id, thread_id}, "marking thread as resolved"); + return ThreadManager.resolveThread(project_id, thread_id, user_id, function(error) { + if (error != null) { return next(error); } + return res.send(204); + }); + }, // No content - reopenThread: (req, res, next) -> - {project_id, thread_id} = req.params - logger.log {project_id, thread_id}, "reopening thread" - ThreadManager.reopenThread project_id, thread_id, (error) -> - return next(error) if error? - res.send 204 # No content + reopenThread(req, res, next) { + const {project_id, thread_id} = req.params; + logger.log({project_id, thread_id}, "reopening thread"); + return ThreadManager.reopenThread(project_id, thread_id, function(error) { + if (error != null) { return next(error); } + return res.send(204); + }); + }, // No content - deleteThread: (req, res, next) -> - {project_id, thread_id} = req.params - logger.log {project_id, thread_id}, "deleting thread" - ThreadManager.deleteThread project_id, thread_id, (error, room_id) -> - return next(error) if error? - MessageManager.deleteAllMessagesInRoom room_id, (error) -> - return next(error) if error? - res.send 204 # No content + deleteThread(req, res, next) { + const {project_id, thread_id} = req.params; + logger.log({project_id, thread_id}, "deleting thread"); + return ThreadManager.deleteThread(project_id, thread_id, function(error, room_id) { + if (error != null) { return next(error); } + return MessageManager.deleteAllMessagesInRoom(room_id, function(error) { + if (error != null) { return next(error); } + return res.send(204); + }); + }); + }, // No content - editMessage: (req, res, next) -> - {content} = req?.body - {project_id, thread_id, message_id} = req.params - logger.log {project_id, thread_id, message_id, content}, "editing message" - ThreadManager.findOrCreateThread project_id, thread_id, (error, room) -> - return next(error) if error? - MessageManager.updateMessage room._id, message_id, content, Date.now(), (error) -> - return next(error) if error? - res.send(204) + editMessage(req, res, next) { + const {content} = req != null ? req.body : undefined; + const {project_id, thread_id, message_id} = req.params; + logger.log({project_id, thread_id, message_id, content}, "editing message"); + return ThreadManager.findOrCreateThread(project_id, thread_id, function(error, room) { + if (error != null) { return next(error); } + return MessageManager.updateMessage(room._id, message_id, content, Date.now(), function(error) { + if (error != null) { return next(error); } + return res.send(204); + }); + }); + }, - deleteMessage: (req, res, next) -> - {project_id, thread_id, message_id} = req.params - logger.log {project_id, thread_id, message_id}, "deleting message" - ThreadManager.findOrCreateThread project_id, thread_id, (error, room) -> - return next(error) if error? - MessageManager.deleteMessage room._id, message_id, (error, message) -> - return next(error) if error? - res.send(204) + deleteMessage(req, res, next) { + const {project_id, thread_id, message_id} = req.params; + logger.log({project_id, thread_id, message_id}, "deleting message"); + return ThreadManager.findOrCreateThread(project_id, thread_id, function(error, room) { + if (error != null) { return next(error); } + return MessageManager.deleteMessage(room._id, message_id, function(error, message) { + if (error != null) { return next(error); } + return res.send(204); + }); + }); + }, - _sendMessage: (client_thread_id, req, res, next) -> - {user_id, content} = req?.body - {project_id} = req.params - if !ObjectId.isValid(user_id) - return res.send(400, "Invalid user_id") - if !content? - return res.send(400, "No content provided") - if content.length > @MAX_MESSAGE_LENGTH - return res.send(400, "Content too long (> #{@MAX_MESSAGE_LENGTH} bytes)") - logger.log {client_thread_id, project_id, user_id, content}, "new message received" - ThreadManager.findOrCreateThread project_id, client_thread_id, (error, thread) -> - return next(error) if error? - MessageManager.createMessage thread._id, user_id, content, Date.now(), (error, message) -> - return next(error) if error? - message = MessageFormatter.formatMessageForClientSide(message) - message.room_id = project_id - res.send(201, message) + _sendMessage(client_thread_id, req, res, next) { + const {user_id, content} = req != null ? req.body : undefined; + const {project_id} = req.params; + if (!ObjectId.isValid(user_id)) { + return res.send(400, "Invalid user_id"); + } + if ((content == null)) { + return res.send(400, "No content provided"); + } + if (content.length > this.MAX_MESSAGE_LENGTH) { + return res.send(400, `Content too long (> ${this.MAX_MESSAGE_LENGTH} bytes)`); + } + logger.log({client_thread_id, project_id, user_id, content}, "new message received"); + return ThreadManager.findOrCreateThread(project_id, client_thread_id, function(error, thread) { + if (error != null) { return next(error); } + return MessageManager.createMessage(thread._id, user_id, content, Date.now(), function(error, message) { + if (error != null) { return next(error); } + message = MessageFormatter.formatMessageForClientSide(message); + message.room_id = project_id; + return res.send(201, message); + }); + }); + }, - _getMessages: (client_thread_id, req, res, next) -> - {project_id} = req.params - if req.query?.before? - before = parseInt(req.query.before, 10) - else - before = null - if req.query?.limit? - limit = parseInt(req.query.limit, 10) - else - limit = MessageHttpController.DEFAULT_MESSAGE_LIMIT - logger.log {limit, before, project_id, client_thread_id}, "get message request received" - ThreadManager.findOrCreateThread project_id, client_thread_id, (error, thread) -> - return next(error) if error? - thread_object_id = thread._id - logger.log {limit, before, project_id, client_thread_id, thread_object_id}, "found or created thread" - MessageManager.getMessages thread_object_id, limit, before, (error, messages) -> - return next(error) if error? - messages = MessageFormatter.formatMessagesForClientSide messages - logger.log {project_id, messages}, "got messages" - res.send 200, messages + _getMessages(client_thread_id, req, res, next) { + let before, limit; + const {project_id} = req.params; + if ((req.query != null ? req.query.before : undefined) != null) { + before = parseInt(req.query.before, 10); + } else { + before = null; + } + if ((req.query != null ? req.query.limit : undefined) != null) { + limit = parseInt(req.query.limit, 10); + } else { + limit = MessageHttpController.DEFAULT_MESSAGE_LIMIT; + } + logger.log({limit, before, project_id, client_thread_id}, "get message request received"); + return ThreadManager.findOrCreateThread(project_id, client_thread_id, function(error, thread) { + if (error != null) { return next(error); } + const thread_object_id = thread._id; + logger.log({limit, before, project_id, client_thread_id, thread_object_id}, "found or created thread"); + return MessageManager.getMessages(thread_object_id, limit, before, function(error, messages) { + if (error != null) { return next(error); } + messages = MessageFormatter.formatMessagesForClientSide(messages); + logger.log({project_id, messages}, "got messages"); + return res.send(200, messages); + }); + }); + } +}); diff --git a/services/chat/app/coffee/Features/Messages/MessageManager.js b/services/chat/app/coffee/Features/Messages/MessageManager.js index bda57097da..44e2d7d7a7 100644 --- a/services/chat/app/coffee/Features/Messages/MessageManager.js +++ b/services/chat/app/coffee/Features/Messages/MessageManager.js @@ -1,69 +1,98 @@ -mongojs = require "../../mongojs" -db = mongojs.db -ObjectId = mongojs.ObjectId -async = require "async" -metrics = require 'metrics-sharelatex' -logger = require 'logger-sharelatex' +/* + * 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 + */ +let MessageManager; +const mongojs = require("../../mongojs"); +const { db } = mongojs; +const { ObjectId } = mongojs; +const async = require("async"); +const metrics = require('metrics-sharelatex'); +const logger = require('logger-sharelatex'); -module.exports = MessageManager = - createMessage: (room_id, user_id, content, timestamp, callback = (error, message) ->) -> - newMessageOpts = - content: content - room_id: room_id - user_id: user_id - timestamp: timestamp - newMessageOpts = @_ensureIdsAreObjectIds(newMessageOpts) - db.messages.save newMessageOpts, callback +module.exports = (MessageManager = { + createMessage(room_id, user_id, content, timestamp, callback) { + if (callback == null) { callback = function(error, message) {}; } + let newMessageOpts = { + content, + room_id, + user_id, + timestamp + }; + newMessageOpts = this._ensureIdsAreObjectIds(newMessageOpts); + return db.messages.save(newMessageOpts, callback); + }, - getMessages: (room_id, limit, before, callback = (error, messages) ->) -> - query = - room_id: room_id - if before? - query.timestamp = { $lt: before } - query = @_ensureIdsAreObjectIds(query) - cursor = db.messages.find(query).sort({ timestamp: -1 }).limit(limit) - cursor.toArray callback + getMessages(room_id, limit, before, callback) { + if (callback == null) { callback = function(error, messages) {}; } + let query = + {room_id}; + if (before != null) { + query.timestamp = { $lt: before }; + } + query = this._ensureIdsAreObjectIds(query); + const cursor = db.messages.find(query).sort({ timestamp: -1 }).limit(limit); + return cursor.toArray(callback); + }, - findAllMessagesInRooms: (room_ids, callback = (error, messages) ->) -> - db.messages.find { + findAllMessagesInRooms(room_ids, callback) { + if (callback == null) { callback = function(error, messages) {}; } + return db.messages.find({ room_id: { $in: room_ids } - }, callback + }, callback); + }, - deleteAllMessagesInRoom: (room_id, callback = (error) ->) -> - db.messages.remove { - room_id: room_id - }, callback + deleteAllMessagesInRoom(room_id, callback) { + if (callback == null) { callback = function(error) {}; } + return db.messages.remove({ + room_id + }, callback); + }, - updateMessage: (room_id, message_id, content, timestamp, callback = (error, message) ->) -> - query = @_ensureIdsAreObjectIds( - _id: message_id - room_id: room_id - ) - db.messages.update query, { - $set: - content: content + updateMessage(room_id, message_id, content, timestamp, callback) { + if (callback == null) { callback = function(error, message) {}; } + const query = this._ensureIdsAreObjectIds({ + _id: message_id, + room_id + }); + return db.messages.update(query, { + $set: { + content, edited_at: timestamp - }, (error) -> - return callback(error) if error? - return callback() + } + }, function(error) { + if (error != null) { return callback(error); } + return callback(); + }); + }, - deleteMessage: (room_id, message_id, callback = (error) ->) -> - query = @_ensureIdsAreObjectIds( - _id: message_id - room_id: room_id - ) - db.messages.remove query, (error) -> - return callback(error) if error? - return callback() + deleteMessage(room_id, message_id, callback) { + if (callback == null) { callback = function(error) {}; } + const query = this._ensureIdsAreObjectIds({ + _id: message_id, + room_id + }); + return db.messages.remove(query, function(error) { + if (error != null) { return callback(error); } + return callback(); + }); + }, - _ensureIdsAreObjectIds: (query) -> - if query.user_id? and query.user_id not instanceof ObjectId - query.user_id = ObjectId(query.user_id) - if query.room_id? and query.room_id not instanceof ObjectId - query.room_id = ObjectId(query.room_id) - if query._id? and query._id not instanceof ObjectId - query._id = ObjectId(query._id) - return query + _ensureIdsAreObjectIds(query) { + if ((query.user_id != null) && !(query.user_id instanceof ObjectId)) { + query.user_id = ObjectId(query.user_id); + } + if ((query.room_id != null) && !(query.room_id instanceof ObjectId)) { + query.room_id = ObjectId(query.room_id); + } + if ((query._id != null) && !(query._id instanceof ObjectId)) { + query._id = ObjectId(query._id); + } + return query; + } +}); [ @@ -72,5 +101,4 @@ module.exports = MessageManager = 'findAllMessagesInRooms', 'updateMessage', 'deleteMessage' -].map (method) -> - metrics.timeAsyncMethod(MessageManager, method, 'mongo.MessageManager', logger) +].map(method => metrics.timeAsyncMethod(MessageManager, method, 'mongo.MessageManager', logger)); diff --git a/services/chat/app/coffee/Features/Threads/ThreadManager.js b/services/chat/app/coffee/Features/Threads/ThreadManager.js index d2c4b82d11..7353b1ab7b 100644 --- a/services/chat/app/coffee/Features/Threads/ThreadManager.js +++ b/services/chat/app/coffee/Features/Threads/ThreadManager.js @@ -1,81 +1,107 @@ -mongojs = require("../../mongojs") -db = mongojs.db -ObjectId = mongojs.ObjectId -logger = require('logger-sharelatex') -metrics = require('metrics-sharelatex') +/* + * 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 + */ +let ThreadManager; +const mongojs = require("../../mongojs"); +const { db } = mongojs; +const { ObjectId } = mongojs; +const logger = require('logger-sharelatex'); +const metrics = require('metrics-sharelatex'); -module.exports = ThreadManager = - GLOBAL_THREAD: "GLOBAL" +module.exports = (ThreadManager = { + GLOBAL_THREAD: "GLOBAL", - findOrCreateThread: (project_id, thread_id, callback = (error, thread) ->) -> - project_id = ObjectId(project_id.toString()) - if thread_id != ThreadManager.GLOBAL_THREAD - thread_id = ObjectId(thread_id.toString()) + findOrCreateThread(project_id, thread_id, callback) { + let query, update; + if (callback == null) { callback = function(error, thread) {}; } + project_id = ObjectId(project_id.toString()); + if (thread_id !== ThreadManager.GLOBAL_THREAD) { + thread_id = ObjectId(thread_id.toString()); + } - if thread_id == ThreadManager.GLOBAL_THREAD + if (thread_id === ThreadManager.GLOBAL_THREAD) { query = { - project_id: project_id + project_id, thread_id: { $exists: false } - } + }; update = { - project_id: project_id - } - else + project_id + }; + } else { query = { - project_id: project_id - thread_id: thread_id - } + project_id, + thread_id + }; update = { - project_id: project_id - thread_id: thread_id - } + project_id, + thread_id + }; + } - db.rooms.update query, update, { upsert: true }, (error) -> - return callback(error) if error? - db.rooms.find query, (error, rooms = []) -> - return callback(error) if error? - return callback null, rooms[0] + return db.rooms.update(query, update, { upsert: true }, function(error) { + if (error != null) { return callback(error); } + return db.rooms.find(query, function(error, rooms) { + if (rooms == null) { rooms = []; } + if (error != null) { return callback(error); } + return callback(null, rooms[0]); + }); + }); + }, - findAllThreadRooms: (project_id, callback = (error, rooms) ->) -> - db.rooms.find { - project_id: ObjectId(project_id.toString()) + findAllThreadRooms(project_id, callback) { + if (callback == null) { callback = function(error, rooms) {}; } + return db.rooms.find({ + project_id: ObjectId(project_id.toString()), thread_id: { $exists: true } }, { thread_id: 1, resolved: 1 - }, callback + }, callback); + }, - resolveThread: (project_id, thread_id, user_id, callback = (error) ->) -> - db.rooms.update { - project_id: ObjectId(project_id.toString()) + resolveThread(project_id, thread_id, user_id, callback) { + if (callback == null) { callback = function(error) {}; } + return db.rooms.update({ + project_id: ObjectId(project_id.toString()), thread_id: ObjectId(thread_id.toString()) }, { $set: { resolved: { - user_id: user_id + user_id, ts: new Date() } } - }, callback + }, callback); + }, - reopenThread: (project_id, thread_id, callback = (error) ->) -> - db.rooms.update { - project_id: ObjectId(project_id.toString()) + reopenThread(project_id, thread_id, callback) { + if (callback == null) { callback = function(error) {}; } + return db.rooms.update({ + project_id: ObjectId(project_id.toString()), thread_id: ObjectId(thread_id.toString()) }, { $unset: { resolved: true } - }, callback + }, callback); + }, - deleteThread: (project_id, thread_id, callback = (error, room_id) ->) -> - @findOrCreateThread project_id, thread_id, (error, room) -> - return callback(error) if error? - db.rooms.remove { + deleteThread(project_id, thread_id, callback) { + if (callback == null) { callback = function(error, room_id) {}; } + return this.findOrCreateThread(project_id, thread_id, function(error, room) { + if (error != null) { return callback(error); } + return db.rooms.remove({ _id: room._id - }, (error) -> - return callback(error) if error? - return callback null, room._id + }, function(error) { + if (error != null) { return callback(error); } + return callback(null, room._id); + }); + }); + } +}); [ @@ -84,5 +110,4 @@ module.exports = ThreadManager = 'resolveThread', 'reopenThread', 'deleteThread', -].map (method) -> - metrics.timeAsyncMethod(ThreadManager, method, 'mongo.ThreadManager', logger) +].map(method => metrics.timeAsyncMethod(ThreadManager, method, 'mongo.ThreadManager', logger)); diff --git a/services/chat/app/coffee/mongojs.js b/services/chat/app/coffee/mongojs.js index 44b54c15f4..2627880239 100644 --- a/services/chat/app/coffee/mongojs.js +++ b/services/chat/app/coffee/mongojs.js @@ -1,6 +1,7 @@ -Settings = require("settings-sharelatex") -mongojs = require "mongojs" -db = mongojs(Settings.mongo.url, ["rooms", "messages"]) -module.exports = - db: db +const Settings = require("settings-sharelatex"); +const mongojs = require("mongojs"); +const db = mongojs(Settings.mongo.url, ["rooms", "messages"]); +module.exports = { + db, ObjectId: mongojs.ObjectId +}; diff --git a/services/chat/app/coffee/router.js b/services/chat/app/coffee/router.js index 79004235e7..f0cda13e5d 100644 --- a/services/chat/app/coffee/router.js +++ b/services/chat/app/coffee/router.js @@ -1,39 +1,50 @@ -MessageHttpController = require('./Features/Messages/MessageHttpController') -{ObjectId} = require "./mongojs" +/* + * decaffeinate suggestions: + * DS102: Remove unnecessary code created because of implicit returns + * Full docs: https://github.com/decaffeinate/decaffeinate/blob/master/docs/suggestions.md + */ +let Router; +const MessageHttpController = require('./Features/Messages/MessageHttpController'); +const {ObjectId} = require("./mongojs"); -module.exports = Router = - route: (app) -> - app.param 'project_id', (req, res, next, project_id) -> - if ObjectId.isValid(project_id) - next() - else - res.send 400, "Invalid project_id" +module.exports = (Router = { + route(app) { + app.param('project_id', function(req, res, next, project_id) { + if (ObjectId.isValid(project_id)) { + return next(); + } else { + return res.send(400, "Invalid project_id"); + } + }); - app.param 'thread_id', (req, res, next, thread_id) -> - if ObjectId.isValid(thread_id) - next() - else - res.send 400, "Invalid thread_id" + app.param('thread_id', function(req, res, next, thread_id) { + if (ObjectId.isValid(thread_id)) { + return next(); + } else { + return res.send(400, "Invalid thread_id"); + } + }); - # These are for backwards compatibility - app.get "/room/:project_id/messages", MessageHttpController.getGlobalMessages - app.post "/room/:project_id/messages", MessageHttpController.sendGlobalMessage + // These are for backwards compatibility + app.get("/room/:project_id/messages", MessageHttpController.getGlobalMessages); + app.post("/room/:project_id/messages", MessageHttpController.sendGlobalMessage); - app.get "/project/:project_id/messages", MessageHttpController.getGlobalMessages - app.post "/project/:project_id/messages", MessageHttpController.sendGlobalMessage + app.get("/project/:project_id/messages", MessageHttpController.getGlobalMessages); + app.post("/project/:project_id/messages", MessageHttpController.sendGlobalMessage); - app.post "/project/:project_id/thread/:thread_id/messages", MessageHttpController.sendThreadMessage - app.get "/project/:project_id/threads", MessageHttpController.getAllThreads + app.post("/project/:project_id/thread/:thread_id/messages", MessageHttpController.sendThreadMessage); + app.get("/project/:project_id/threads", MessageHttpController.getAllThreads); - app.post "/project/:project_id/thread/:thread_id/messages/:message_id/edit", MessageHttpController.editMessage - app.del "/project/:project_id/thread/:thread_id/messages/:message_id", MessageHttpController.deleteMessage + app.post("/project/:project_id/thread/:thread_id/messages/:message_id/edit", MessageHttpController.editMessage); + app.del("/project/:project_id/thread/:thread_id/messages/:message_id", MessageHttpController.deleteMessage); - app.post "/project/:project_id/thread/:thread_id/resolve", MessageHttpController.resolveThread - app.post "/project/:project_id/thread/:thread_id/reopen", MessageHttpController.reopenThread - app.del "/project/:project_id/thread/:thread_id", MessageHttpController.deleteThread + app.post("/project/:project_id/thread/:thread_id/resolve", MessageHttpController.resolveThread); + app.post("/project/:project_id/thread/:thread_id/reopen", MessageHttpController.reopenThread); + app.del("/project/:project_id/thread/:thread_id", MessageHttpController.deleteThread); - app.get "/status", (req, res, next) -> - res.send("chat is alive") + return app.get("/status", (req, res, next) => res.send("chat is alive")); + } +}); diff --git a/services/chat/app/coffee/server.js b/services/chat/app/coffee/server.js index 3b0dc4b42d..c3b6a7de0f 100644 --- a/services/chat/app/coffee/server.js +++ b/services/chat/app/coffee/server.js @@ -1,39 +1,48 @@ -logger = require 'logger-sharelatex' -logger.initialize("chat-sharelatex") -metrics = require("metrics-sharelatex") -metrics.initialize("chat") -Path = require("path") -express = require("express") -app = express() -server = require("http").createServer(app) -Router = require "./router" +/* + * decaffeinate suggestions: + * DS102: Remove unnecessary code created because of implicit returns + * Full docs: https://github.com/decaffeinate/decaffeinate/blob/master/docs/suggestions.md + */ +const logger = require('logger-sharelatex'); +logger.initialize("chat-sharelatex"); +const metrics = require("metrics-sharelatex"); +metrics.initialize("chat"); +const Path = require("path"); +const express = require("express"); +const app = express(); +const server = require("http").createServer(app); +const Router = require("./router"); -app.use express.bodyParser() -app.use metrics.http.monitor(logger) +app.use(express.bodyParser()); +app.use(metrics.http.monitor(logger)); -if (app.get 'env') == 'development' - console.log "Development Enviroment" - app.use express.errorHandler({ dumpExceptions: true, showStack: true }) - -if (app.get 'env') == 'production' - console.log "Production Enviroment" - app.use express.logger() - app.use express.errorHandler() - -profiler = require "v8-profiler" -app.get "/profile", (req, res) -> - time = parseInt(req.query.time || "1000") - profiler.startProfiling("test") - setTimeout () -> - profile = profiler.stopProfiling("test") - res.json(profile) - , time - -Router.route(app) - -module.exports = { - server: server - app: app +if ((app.get('env')) === 'development') { + console.log("Development Enviroment"); + app.use(express.errorHandler({ dumpExceptions: true, showStack: true })); } +if ((app.get('env')) === 'production') { + console.log("Production Enviroment"); + app.use(express.logger()); + app.use(express.errorHandler()); +} + +const profiler = require("v8-profiler"); +app.get("/profile", function(req, res) { + const time = parseInt(req.query.time || "1000"); + profiler.startProfiling("test"); + return setTimeout(function() { + const profile = profiler.stopProfiling("test"); + return res.json(profile); + } + , time); +}); + +Router.route(app); + +module.exports = { + server, + app +}; +