From 136d895d155f28c2e75b3af206549acaa2a354ed Mon Sep 17 00:00:00 2001 From: Philip Molares Date: Mon, 15 Feb 2021 09:42:51 +0100 Subject: Linter: Fix all lint errors Signed-off-by: Philip Molares --- lib/realtime.js | 245 ++++++++++++++++++++++++++++---------------------------- 1 file changed, 124 insertions(+), 121 deletions(-) (limited to 'lib/realtime.js') diff --git a/lib/realtime.js b/lib/realtime.js index ec99707e..abea7165 100644 --- a/lib/realtime.js +++ b/lib/realtime.js @@ -1,25 +1,25 @@ 'use strict' // realtime // external modules -var cookie = require('cookie') -var cookieParser = require('cookie-parser') -var async = require('async') -var randomcolor = require('randomcolor') -var Chance = require('chance') -var chance = new Chance() -var moment = require('moment') +const cookie = require('cookie') +const cookieParser = require('cookie-parser') +const async = require('async') +const randomcolor = require('randomcolor') +const Chance = require('chance') +const chance = new Chance() +const moment = require('moment') // core -var config = require('./config') -var logger = require('./logger') -var history = require('./history') -var models = require('./models') +const config = require('./config') +const logger = require('./logger') +const history = require('./history') +const models = require('./models') // ot -var ot = require('./ot') +const ot = require('./ot') // public -var realtime = { +const realtime = { io: null, onAuthorizeSuccess: onAuthorizeSuccess, onAuthorizeFail: onAuthorizeFail, @@ -41,7 +41,7 @@ function onAuthorizeFail (data, message, error, accept) { // secure the origin by the cookie function secure (socket, next) { try { - var handshakeData = socket.request + const handshakeData = socket.request if (handshakeData.headers.cookie) { handshakeData.cookie = cookie.parse(handshakeData.headers.cookie) handshakeData.sessionID = cookieParser.signedCookie(handshakeData.cookie[config.sessionName], config.sessionSecret) @@ -62,7 +62,7 @@ function secure (socket, next) { } function emitCheck (note) { - var out = { + const out = { title: note.title, updatetime: note.updatetime, lastchangeuser: note.lastchangeuser, @@ -74,12 +74,12 @@ function emitCheck (note) { } // actions -var users = {} -var notes = {} +const users = {} +const notes = {} // update when the note is dirty setInterval(function () { async.each(Object.keys(notes), function (key, callback) { - var note = notes[key] + const note = notes[key] if (note.server.isDirty) { logger.debug(`updater found dirty note: ${key}`) note.server.isDirty = false @@ -93,8 +93,8 @@ setInterval(function () { logger.error('note not found: ', note.id) } if (err || !_note) { - for (var i = 0, l = note.socks.length; i < l; i++) { - var sock = note.socks[i] + for (let i = 0, l = note.socks.length; i < l; i++) { + const sock = note.socks[i] if (typeof sock !== 'undefined' && sock) { setTimeout(function () { sock.disconnect(true) @@ -123,7 +123,7 @@ function updateNote (note, callback) { }).then(function (_note) { if (!_note) return callback(null, null) // update user note history - var tempUsers = Object.assign({}, note.tempUsers) + const tempUsers = Object.assign({}, note.tempUsers) note.tempUsers = {} Object.keys(tempUsers).forEach(function (key) { updateHistory(key, note, tempUsers[key]) @@ -157,9 +157,9 @@ function updateNote (note, callback) { function finishUpdateNote (note, _note, callback) { if (!note || !note.server) return callback(null, null) - var body = note.server.document - var title = note.title = models.Note.parseNoteTitle(body) - var values = { + const body = note.server.document + const title = note.title = models.Note.parseNoteTitle(body) + const values = { title: title, content: body, authorship: note.authorship, @@ -178,7 +178,7 @@ function finishUpdateNote (note, _note, callback) { // clean when user not in any rooms or user not in connected list setInterval(function () { async.each(Object.keys(users), function (key, callback) { - var socket = realtime.io.sockets.connected[key] + let socket = realtime.io.sockets.connected[key] if ((!socket && users[key]) || (socket && (!socket.rooms || socket.rooms.length <= 0))) { logger.debug(`cleaner found redundant user: ${key}`) @@ -196,7 +196,7 @@ setInterval(function () { }) }, 60000) -var saverSleep = false +let saverSleep = false // save note revision in interval setInterval(function () { if (saverSleep) return @@ -210,11 +210,11 @@ setInterval(function () { function getStatus (callback) { models.Note.count().then(function (notecount) { - var distinctaddresses = [] - var regaddresses = [] - var distinctregaddresses = [] + const distinctaddresses = [] + const regaddresses = [] + const distinctregaddresses = [] Object.keys(users).forEach(function (key) { - var user = users[key] + const user = users[key] if (!user) return let found = false for (let i = 0; i < distinctaddresses.length; i++) { @@ -241,20 +241,22 @@ function getStatus (callback) { } }) models.User.count().then(function (regcount) { - // eslint-disable-next-line standard/no-callback-literal - return callback ? callback({ - onlineNotes: Object.keys(notes).length, - onlineUsers: Object.keys(users).length, - distinctOnlineUsers: distinctaddresses.length, - notesCount: notecount, - registeredUsers: regcount, - onlineRegisteredUsers: regaddresses.length, - distinctOnlineRegisteredUsers: distinctregaddresses.length, - isConnectionBusy: isConnectionBusy, - connectionSocketQueueLength: connectionSocketQueue.length, - isDisconnectBusy: isDisconnectBusy, - disconnectSocketQueueLength: disconnectSocketQueue.length - }) : null + return callback + // eslint-disable-next-line node/no-callback-literal + ? callback({ + onlineNotes: Object.keys(notes).length, + onlineUsers: Object.keys(users).length, + distinctOnlineUsers: distinctaddresses.length, + notesCount: notecount, + registeredUsers: regcount, + onlineRegisteredUsers: regaddresses.length, + distinctOnlineRegisteredUsers: distinctregaddresses.length, + isConnectionBusy: isConnectionBusy, + connectionSocketQueueLength: connectionSocketQueue.length, + isDisconnectBusy: isDisconnectBusy, + disconnectSocketQueueLength: disconnectSocketQueue.length + }) + : null }).catch(function (err) { return logger.error('count user failed: ' + err) }) @@ -282,7 +284,7 @@ function extractNoteIdFromSocket (socket) { } function parseNoteIdFromSocket (socket, callback) { - var noteId = extractNoteIdFromSocket(socket) + const noteId = extractNoteIdFromSocket(socket) if (!noteId) { return callback(null, null) } @@ -293,32 +295,32 @@ function parseNoteIdFromSocket (socket, callback) { } function emitOnlineUsers (socket) { - var noteId = socket.noteId + const noteId = socket.noteId if (!noteId || !notes[noteId]) return - var users = [] + const users = [] Object.keys(notes[noteId].users).forEach(function (key) { - var user = notes[noteId].users[key] + const user = notes[noteId].users[key] if (user) { users.push(buildUserOutData(user)) } }) - var out = { + const out = { users: users } realtime.io.to(noteId).emit('online users', out) } function emitUserStatus (socket) { - var noteId = socket.noteId - var user = users[socket.id] + const noteId = socket.noteId + const user = users[socket.id] if (!noteId || !notes[noteId] || !user) return - var out = buildUserOutData(user) + const out = buildUserOutData(user) socket.broadcast.to(noteId).emit('user status', out) } function emitRefresh (socket) { - var noteId = socket.noteId + const noteId = socket.noteId if (!noteId || !notes[noteId]) return - var note = notes[noteId] - var out = { + const note = notes[noteId] + const out = { title: note.title, docmaxlength: config.documentMaxLength, owner: note.owner, @@ -335,7 +337,7 @@ function emitRefresh (socket) { } function isDuplicatedInSocketQueue (queue, socket) { - for (var i = 0; i < queue.length; i++) { + for (let i = 0; i < queue.length; i++) { if (queue[i] && queue[i].id === socket.id) { return true } @@ -344,7 +346,7 @@ function isDuplicatedInSocketQueue (queue, socket) { } function clearSocketQueue (queue, socket) { - for (var i = 0; i < queue.length; i++) { + for (let i = 0; i < queue.length; i++) { if (!queue[i] || queue[i].id === socket.id) { queue.splice(i, 1) i-- @@ -378,10 +380,10 @@ function checkViewPermission (req, note) { } } -var isConnectionBusy = false -var connectionSocketQueue = [] -var isDisconnectBusy = false -var disconnectSocketQueue = [] +let isConnectionBusy = false +const connectionSocketQueue = [] +let isDisconnectBusy = false +const disconnectSocketQueue = [] function finishConnection (socket, noteId, socketId) { // if no valid info provided will drop the client @@ -393,8 +395,8 @@ function finishConnection (socket, noteId, socketId) { interruptConnection(socket, noteId, socketId) return failConnection(403, 'connection forbidden', socket) } - let note = notes[noteId] - let user = users[socketId] + const note = notes[noteId] + const user = users[socketId] // update user color to author color if (note.authors[user.userid]) { user.color = users[socket.id].color = note.authors[user.userid].color @@ -417,7 +419,7 @@ function finishConnection (socket, noteId, socketId) { connectNextSocket() if (config.debug) { - let noteId = socket.noteId + const noteId = socket.noteId logger.debug(`SERVER connected a client to [${noteId}]:`) logger.debug(JSON.stringify(user)) logger.debug(notes) @@ -431,13 +433,13 @@ function startConnection (socket) { if (isConnectionBusy) return isConnectionBusy = true - var noteId = socket.noteId + const noteId = socket.noteId if (!noteId) { return failConnection(404, 'note id not found', socket) } if (!notes[noteId]) { - var include = [{ + const include = [{ model: models.User, as: 'owner' }, { @@ -461,21 +463,21 @@ function startConnection (socket) { if (!note) { return failConnection(404, 'note not found', socket) } - var owner = note.ownerId - var ownerprofile = note.owner ? models.User.getProfile(note.owner) : null + const owner = note.ownerId + const ownerprofile = note.owner ? models.User.getProfile(note.owner) : null - var lastchangeuser = note.lastchangeuserId - var lastchangeuserprofile = note.lastchangeuser ? models.User.getProfile(note.lastchangeuser) : null + const lastchangeuser = note.lastchangeuserId + const lastchangeuserprofile = note.lastchangeuser ? models.User.getProfile(note.lastchangeuser) : null - var body = note.content - var createtime = note.createdAt - var updatetime = note.lastchangeAt - var server = new ot.EditorSocketIOServer(body, [], noteId, ifMayEdit, operationCallback) + const body = note.content + const createtime = note.createdAt + const updatetime = note.lastchangeAt + const server = new ot.EditorSocketIOServer(body, [], noteId, ifMayEdit, operationCallback) - var authors = {} - for (var i = 0; i < note.authors.length; i++) { - var author = note.authors[i] - var profile = models.User.getProfile(author.user) + const authors = {} + for (let i = 0; i < note.authors.length; i++) { + const author = note.authors[i] + const profile = models.User.getProfile(author.user) if (profile) { authors[author.userId] = { userid: author.userId, @@ -536,16 +538,17 @@ function disconnect (socket) { if (users[socket.id]) { delete users[socket.id] } - var noteId = socket.noteId - var note = notes[noteId] + const noteId = socket.noteId + const note = notes[noteId] if (note) { // delete user in users if (note.users[socket.id]) { delete note.users[socket.id] } // remove sockets in the note socks + let index do { - var index = note.socks.indexOf(socket) + index = note.socks.indexOf(socket) if (index !== -1) { note.socks.splice(index, 1) } @@ -590,7 +593,7 @@ function disconnect (socket) { } function buildUserOutData (user) { - var out = { + const out = { id: user.id, login: user.login, userid: user.userid, @@ -607,7 +610,7 @@ function buildUserOutData (user) { function updateUserData (socket, user) { // retrieve user data from passport if (socket.request.user && socket.request.user.logged_in) { - var profile = models.User.getProfile(socket.request.user) + const profile = models.User.getProfile(socket.request.user) user.photo = profile.photo user.name = profile.name user.userid = socket.request.user.id @@ -620,10 +623,10 @@ function updateUserData (socket, user) { } function ifMayEdit (socket, callback) { - var noteId = socket.noteId + const noteId = socket.noteId if (!noteId || !notes[noteId]) return - var note = notes[noteId] - var mayEdit = true + const note = notes[noteId] + let mayEdit = true switch (note.permission) { case 'freely': // not blocking anyone @@ -650,13 +653,13 @@ function ifMayEdit (socket, callback) { } function operationCallback (socket, operation) { - var noteId = socket.noteId + const noteId = socket.noteId if (!noteId || !notes[noteId]) return - var note = notes[noteId] - var userId = null + const note = notes[noteId] + let userId = null // save authors if (socket.request.user && socket.request.user.logged_in) { - var user = users[socket.id] + const user = users[socket.id] if (!user) return userId = socket.request.user.id if (!note.authors[userId]) { @@ -692,7 +695,7 @@ function operationCallback (socket, operation) { } function updateHistory (userId, note, time) { - var noteId = note.alias ? note.alias : models.Note.encodeNoteId(note.id) + const noteId = note.alias ? note.alias : models.Note.encodeNoteId(note.id) if (note.server) history.updateHistory(userId, noteId, note.server.document, time) } @@ -713,12 +716,12 @@ function connection (socket) { // initialize user data // random color - var color = randomcolor() + let color = randomcolor() // make sure color not duplicated or reach max random count if (notes[noteId]) { - var randomcount = 0 - var maxrandomcount = 10 - var found = false + let randomcount = 0 + const maxrandomcount = 10 + let found = false do { Object.keys(notes[noteId].users).forEach(function (userId) { if (notes[noteId].users[userId].color === color) { @@ -758,8 +761,8 @@ function connection (socket) { // received user status socket.on('user status', function (data) { - var noteId = socket.noteId - var user = users[socket.id] + const noteId = socket.noteId + const user = users[socket.id] if (!noteId || !notes[noteId] || !user) return logger.debug(`SERVER received [${noteId}] user status from [${socket.id}]: ${JSON.stringify(data)}`) if (data) { @@ -773,9 +776,9 @@ function connection (socket) { socket.on('permission', function (permission) { // need login to do more actions if (socket.request.user && socket.request.user.logged_in) { - var noteId = socket.noteId + const noteId = socket.noteId if (!noteId || !notes[noteId]) return - var note = notes[noteId] + const note = notes[noteId] // Only owner can change permission if (note.owner && note.owner === socket.request.user.id) { if (permission === 'freely' && !config.allowAnonymous && !config.allowAnonymousEdits) return @@ -790,12 +793,12 @@ function connection (socket) { if (!count) { return } - var out = { + const out = { permission: permission } realtime.io.to(note.id).emit('permission', out) - for (var i = 0, l = note.socks.length; i < l; i++) { - var sock = note.socks[i] + for (let i = 0, l = note.socks.length; i < l; i++) { + const sock = note.socks[i] if (typeof sock !== 'undefined' && sock) { // check view permission if (!checkViewPermission(sock.request, note)) { @@ -819,9 +822,9 @@ function connection (socket) { socket.on('delete', function () { // need login to do more actions if (socket.request.user && socket.request.user.logged_in) { - var noteId = socket.noteId + const noteId = socket.noteId if (!noteId || !notes[noteId]) return - var note = notes[noteId] + const note = notes[noteId] // Only owner can delete note if (note.owner && note.owner === socket.request.user.id) { models.Note.destroy({ @@ -830,8 +833,8 @@ function connection (socket) { } }).then(function (count) { if (!count) return - for (var i = 0, l = note.socks.length; i < l; i++) { - var sock = note.socks[i] + for (let i = 0, l = note.socks.length; i < l; i++) { + const sock = note.socks[i] if (typeof sock !== 'undefined' && sock) { sock.emit('delete') setTimeout(function () { @@ -849,9 +852,9 @@ function connection (socket) { // reveiced when user logout or changed socket.on('user changed', function () { logger.info('user changed') - var noteId = socket.noteId + const noteId = socket.noteId if (!noteId || !notes[noteId]) return - var user = notes[noteId].users[socket.id] + const user = notes[noteId].users[socket.id] if (!user) return updateUserData(socket, user) emitOnlineUsers(socket) @@ -859,14 +862,14 @@ function connection (socket) { // received sync of online users request socket.on('online users', function () { - var noteId = socket.noteId + const noteId = socket.noteId if (!noteId || !notes[noteId]) return - var users = [] + const users = [] Object.keys(notes[noteId].users).forEach(function (key) { - var user = notes[noteId].users[key] + const user = notes[noteId].users[key] if (user) { users.push(buildUserOutData(user)) } }) - var out = { + const out = { users: users } socket.emit('online users', out) @@ -882,31 +885,31 @@ function connection (socket) { // received cursor focus socket.on('cursor focus', function (data) { - var noteId = socket.noteId - var user = users[socket.id] + const noteId = socket.noteId + const user = users[socket.id] if (!noteId || !notes[noteId] || !user) return user.cursor = data - var out = buildUserOutData(user) + const out = buildUserOutData(user) socket.broadcast.to(noteId).emit('cursor focus', out) }) // received cursor activity socket.on('cursor activity', function (data) { - var noteId = socket.noteId - var user = users[socket.id] + const noteId = socket.noteId + const user = users[socket.id] if (!noteId || !notes[noteId] || !user) return user.cursor = data - var out = buildUserOutData(user) + const out = buildUserOutData(user) socket.broadcast.to(noteId).emit('cursor activity', out) }) // received cursor blur socket.on('cursor blur', function () { - var noteId = socket.noteId - var user = users[socket.id] + const noteId = socket.noteId + const user = users[socket.id] if (!noteId || !notes[noteId] || !user) return user.cursor = null - var out = { + const out = { id: socket.id } socket.broadcast.to(noteId).emit('cursor blur', out) -- cgit v1.2.3