diff --git a/.eslintrc b/.eslintrc index 2db58d7dbd0..7cf4fcf95d8 100644 --- a/.eslintrc +++ b/.eslintrc @@ -39,6 +39,24 @@ "no-inner-declarations": [2, "functions"], "no-invalid-regexp": 2, "no-irregular-whitespace": 2, + "no-mixed-operators": [2, { + "groups": [ + ["%", "**"], + ["%", "+"], + ["%", "-"], + ["%", "*"], + ["%", "/"], + ["**", "+"], + ["**", "-"], + ["**", "*"], + ["**", "/"], + ["&", "|", "^", "~", "<<", ">>", ">>>"], + ["==", "!=", "===", "!==", ">", ">=", "<", "<="], + ["&&", "||"], + ["in", "instanceof"] + ], + "allowSamePrecedence": false + }], "no-mixed-spaces-and-tabs": 2, "no-sparse-arrays": 2, "no-negated-in-lhs": 2, @@ -55,6 +73,22 @@ "no-void": 2, "no-var": 2, "no-multiple-empty-lines": [2, { "max": 2 }], + "no-nested-ternary": 2, + "prefer-rest-params": 2, + "array-callback-return": 2, + "prefer-destructuring": [2, { + "VariableDeclarator": { + "array": false, + "object": true + }, + "AssignmentExpression": { + "array": false, + "object": false + } + }, { + "enforceForRenamedProperties": false + }], + "no-duplicate-imports": 2, "arrow-parens": [2, "always"], "quote-props": [2, "as-needed"], "no-array-constructor": 2, diff --git a/.scripts/logs.js b/.scripts/logs.js index f39af360123..be65d91454b 100644 --- a/.scripts/logs.js +++ b/.scripts/logs.js @@ -75,7 +75,7 @@ function getPRInfo(number, commit) { .then((commits) => { info.contributors = _.unique(_.flatten(commits.data.map((i) => { if (!i.author || !i.committer) { - return; + return null; } return [i.author.login, i.committer.login]; diff --git a/.scripts/md.js b/.scripts/md.js index 315e27772cf..6f927f192cc 100644 --- a/.scripts/md.js +++ b/.scripts/md.js @@ -2,7 +2,7 @@ const path = require('path'); const fs = require('fs'); const semver = require('semver'); const _ = require('underscore'); -const execSync = require('child_process').execSync; +const { execSync } = require('child_process'); const historyDataFile = path.join(__dirname, '../.github/history.json'); const historyManualDataFile = path.join(__dirname, '../.github/history-manual.json'); diff --git a/.scripts/start.js b/.scripts/start.js index d6347b1524a..3f08b560827 100644 --- a/.scripts/start.js +++ b/.scripts/start.js @@ -3,7 +3,7 @@ const path = require('path'); const fs = require('fs'); const extend = require('util')._extend; -const exec = require('child_process').exec; +const { exec } = require('child_process'); const processes = []; const baseDir = path.resolve(__dirname, '..'); diff --git a/imports/message-read-receipt/server/models/ReadReceipts.js b/imports/message-read-receipt/server/models/ReadReceipts.js index 2c7937c580c..5d62edb1fdd 100644 --- a/imports/message-read-receipt/server/models/ReadReceipts.js +++ b/imports/message-read-receipt/server/models/ReadReceipts.js @@ -1,6 +1,6 @@ class ModelReadReceipts extends RocketChat.models._Base { - constructor() { - super(...arguments); + constructor(...args) { + super(...args); this.tryEnsureIndex({ roomId: 1, diff --git a/package.json b/package.json index 198d9611485..99d6f81f6be 100644 --- a/package.json +++ b/package.json @@ -63,8 +63,9 @@ "start": "meteor npm i && meteor", "debug": "meteor run --inspect", "debug-brk": "meteor run --inspect-brk", - "lint": "eslint .", - "lint-fix": "eslint . --fix", + "livechat-lint": "eslint ./packages/rocketchat-livechat/.app/", + "core-lint": "eslint .", + "lint": "npm run core-lint && npm run livechat-lint", "stylelint": "stylelint packages/**/*.css", "test": "node .scripts/start.js", "deploy": "npm run build && pm2 startOrRestart pm2.json", diff --git a/packages/chatpal-search/server/provider/provider.js b/packages/chatpal-search/server/provider/provider.js index 46c2e0e68fe..efe4adf2175 100644 --- a/packages/chatpal-search/server/provider/provider.js +++ b/packages/chatpal-search/server/provider/provider.js @@ -1,5 +1,4 @@ -import { searchProviderService } from 'meteor/rocketchat:search'; -import { SearchProvider } from 'meteor/rocketchat:search'; +import { searchProviderService, SearchProvider } from 'meteor/rocketchat:search'; import Index from './index'; import ChatpalLogger from '../utils/logger'; diff --git a/packages/meteor-accounts-saml/saml_client.js b/packages/meteor-accounts-saml/saml_client.js index 31b4f29aca7..6a85fbdbbf6 100644 --- a/packages/meteor-accounts-saml/saml_client.js +++ b/packages/meteor-accounts-saml/saml_client.js @@ -20,7 +20,7 @@ const logoutBehaviour = { ONLY_RC: 'Local', }; -Meteor.logout = function() { +Meteor.logout = function(...args) { const samlService = ServiceConfiguration.configurations.findOne({ service: 'saml' }); if (samlService) { const provider = samlService.clientConfig && samlService.clientConfig.provider; @@ -37,7 +37,7 @@ Meteor.logout = function() { } } } - return MeteorLogout.apply(Meteor, arguments); + return MeteorLogout.apply(Meteor, args); }; const openCenteredPopup = function(url, width, height) { diff --git a/packages/meteor-accounts-saml/saml_rocketchat.js b/packages/meteor-accounts-saml/saml_rocketchat.js index a181a1f8ed5..38e006b9dde 100644 --- a/packages/meteor-accounts-saml/saml_rocketchat.js +++ b/packages/meteor-accounts-saml/saml_rocketchat.js @@ -164,11 +164,10 @@ const updateServices = debounce(() => { $set: samlConfigs, }); return configureSamlService(samlConfigs); - } else { - ServiceConfiguration.configurations.remove({ - service: serviceName.toLowerCase(), - }); } + return ServiceConfiguration.configurations.remove({ + service: serviceName.toLowerCase(), + }); }).filter((e) => e); }, 2000); diff --git a/packages/meteor-accounts-saml/saml_server.js b/packages/meteor-accounts-saml/saml_server.js index 22131e54eab..c65c3b85fae 100644 --- a/packages/meteor-accounts-saml/saml_server.js +++ b/packages/meteor-accounts-saml/saml_server.js @@ -49,7 +49,7 @@ Meteor.methods({ }, { 'services.saml': 1, }); - let nameID = user.services.saml.nameID; + let { nameID } = user.services.saml; const sessionIndex = user.services.saml.idpSession; nameID = sessionIndex; if (Accounts.saml.settings.debug) { diff --git a/packages/meteor-accounts-saml/saml_utils.js b/packages/meteor-accounts-saml/saml_utils.js index 1d1d8ab8949..0f5a599ba7e 100644 --- a/packages/meteor-accounts-saml/saml_utils.js +++ b/packages/meteor-accounts-saml/saml_utils.js @@ -15,9 +15,9 @@ SAML = function(options) { this.options = this.initialize(options); }; -function debugLog() { +function debugLog(...args) { if (Meteor.settings.debug) { - console.log.apply(this, arguments); + console.log.apply(this, args); } } diff --git a/packages/meteor-autocomplete/client/autocomplete-client.js b/packages/meteor-autocomplete/client/autocomplete-client.js index c9f225a61ce..4ff92bf9d1a 100755 --- a/packages/meteor-autocomplete/client/autocomplete-client.js +++ b/packages/meteor-autocomplete/client/autocomplete-client.js @@ -80,7 +80,7 @@ this.AutoComplete = class { item: '.-autocomplete-item', ...settings.selector, }; - const rules = this.rules; + const { rules } = this; Object.keys(rules).forEach((key) => { const rule = rules[key]; diff --git a/packages/rocketchat-2fa/client/TOTPPassword.js b/packages/rocketchat-2fa/client/TOTPPassword.js index 862a5127484..d8bf6b114bb 100644 --- a/packages/rocketchat-2fa/client/TOTPPassword.js +++ b/packages/rocketchat-2fa/client/TOTPPassword.js @@ -37,7 +37,7 @@ Meteor.loginWithPasswordAndTOTP = function(selector, password, code, callback) { }); }; -const loginWithPassword = Meteor.loginWithPassword; +const { loginWithPassword } = Meteor; Meteor.loginWithPassword = function(email, password, cb) { loginWithPassword(email, password, (error) => { diff --git a/packages/rocketchat-api/server/api.js b/packages/rocketchat-api/server/api.js index 8c17cca0834..c93a84cd927 100644 --- a/packages/rocketchat-api/server/api.js +++ b/packages/rocketchat-api/server/api.js @@ -139,7 +139,7 @@ class API extends Restivus { routes = [routes]; } - const version = this._config.version; + const { version } = this._config; routes.forEach((route) => { // Note: This is required due to Restivus calling `addRoute` in the constructor of itself @@ -362,7 +362,7 @@ class API extends Restivus { } } -const getUserAuth = function _getUserAuth() { +const getUserAuth = function _getUserAuth(...args) { const invalidResults = [undefined, null, false]; return { token: 'services.resume.loginTokens.hashedToken', @@ -375,7 +375,7 @@ const getUserAuth = function _getUserAuth() { const method = RocketChat.API.v1.authMethods[i]; if (typeof method === 'function') { - const result = method.apply(this, arguments); + const result = method.apply(this, args); if (!invalidResults.includes(result)) { return result; } diff --git a/packages/rocketchat-api/server/v1/channels.js b/packages/rocketchat-api/server/v1/channels.js index 50f69a19589..a2177bfc317 100644 --- a/packages/rocketchat-api/server/v1/channels.js +++ b/packages/rocketchat-api/server/v1/channels.js @@ -105,7 +105,7 @@ RocketChat.API.v1.addRoute('channels.close', { authRequired: true }, { RocketChat.API.v1.addRoute('channels.counters', { authRequired: true }, { get() { const access = RocketChat.authz.hasPermission(this.userId, 'view-room-administration'); - const userId = this.requestParams().userId; + const { userId } = this.requestParams(); let user = this.userId; let unreads = null; let userMentions = null; @@ -174,10 +174,7 @@ function createChannelValidator(params) { } function createChannel(userId, params) { - let readOnly = false; - if (typeof params.readOnly !== 'undefined') { - readOnly = params.readOnly; - } + const readOnly = typeof params.readOnly !== 'undefined' ? params.readOnly : false; let id; Meteor.runAsUser(userId, () => { @@ -197,8 +194,7 @@ RocketChat.API.channels.create = { RocketChat.API.v1.addRoute('channels.create', { authRequired: true }, { post() { - const userId = this.userId; - const bodyParams = this.bodyParams; + const { userId, bodyParams } = this; let error; @@ -340,20 +336,14 @@ RocketChat.API.v1.addRoute('channels.history', { authRequired: true }, { oldestDate = new Date(this.queryParams.oldest); } - let inclusive = false; - if (this.queryParams.inclusive) { - inclusive = this.queryParams.inclusive; - } + const inclusive = this.queryParams.inclusive || false; let count = 20; if (this.queryParams.count) { count = parseInt(this.queryParams.count); } - let unreads = false; - if (this.queryParams.unreads) { - unreads = this.queryParams.unreads; - } + const unreads = this.queryParams.unreads || false; let result; Meteor.runAsUser(this.userId, () => { diff --git a/packages/rocketchat-api/server/v1/groups.js b/packages/rocketchat-api/server/v1/groups.js index 2fb5d3af312..6127a8fad5c 100644 --- a/packages/rocketchat-api/server/v1/groups.js +++ b/packages/rocketchat-api/server/v1/groups.js @@ -194,10 +194,7 @@ RocketChat.API.v1.addRoute('groups.create', { authRequired: true }, { return RocketChat.API.v1.failure('Body param "customFields" must be an object if provided'); } - let readOnly = false; - if (typeof this.bodyParams.readOnly !== 'undefined') { - readOnly = this.bodyParams.readOnly; - } + const readOnly = typeof this.bodyParams.readOnly !== 'undefined' ? this.bodyParams.readOnly : false; let id; Meteor.runAsUser(this.userId, () => { @@ -307,20 +304,14 @@ RocketChat.API.v1.addRoute('groups.history', { authRequired: true }, { oldestDate = new Date(this.queryParams.oldest); } - let inclusive = false; - if (this.queryParams.inclusive) { - inclusive = this.queryParams.inclusive; - } + const inclusive = this.queryParams.inclusive || false; let count = 20; if (this.queryParams.count) { count = parseInt(this.queryParams.count); } - let unreads = false; - if (this.queryParams.unreads) { - unreads = this.queryParams.unreads; - } + const unreads = this.queryParams.unreads || false; let result; Meteor.runAsUser(this.userId, () => { diff --git a/packages/rocketchat-api/server/v1/im.js b/packages/rocketchat-api/server/v1/im.js index c98c3958374..2956500d428 100644 --- a/packages/rocketchat-api/server/v1/im.js +++ b/packages/rocketchat-api/server/v1/im.js @@ -68,7 +68,7 @@ RocketChat.API.v1.addRoute(['dm.counters', 'im.counters'], { authRequired: true user = ruserId; } const rs = findDirectMessageRoom(this.requestParams(), { _id: user }); - const room = rs.room; + const { room } = rs; const dm = rs.subscription; lm = room.lm ? room.lm : room._updatedAt; @@ -144,20 +144,14 @@ RocketChat.API.v1.addRoute(['dm.history', 'im.history'], { authRequired: true }, oldestDate = new Date(this.queryParams.oldest); } - let inclusive = false; - if (this.queryParams.inclusive) { - inclusive = this.queryParams.inclusive; - } + const inclusive = this.queryParams.inclusive || false; let count = 20; if (this.queryParams.count) { count = parseInt(this.queryParams.count); } - let unreads = false; - if (this.queryParams.unreads) { - unreads = this.queryParams.unreads; - } + const unreads = this.queryParams.unreads || false; let result; Meteor.runAsUser(this.userId, () => { @@ -245,7 +239,7 @@ RocketChat.API.v1.addRoute(['dm.messages.others', 'im.messages.others'], { authR return RocketChat.API.v1.unauthorized(); } - const roomId = this.queryParams.roomId; + const { roomId } = this.queryParams; if (!roomId || !roomId.trim()) { throw new Meteor.Error('error-roomid-param-not-provided', 'The parameter "roomId" is required'); } diff --git a/packages/rocketchat-api/server/v1/integrations.js b/packages/rocketchat-api/server/v1/integrations.js index cba06102fd6..f0f6db93cfd 100644 --- a/packages/rocketchat-api/server/v1/integrations.js +++ b/packages/rocketchat-api/server/v1/integrations.js @@ -49,7 +49,7 @@ RocketChat.API.v1.addRoute('integrations.history', { authRequired: true }, { return RocketChat.API.v1.failure('Invalid integration id.'); } - const id = this.queryParams.id; + const { id } = this.queryParams; const { offset, count } = this.getPaginationItems(); const { sort, fields, query } = this.parseJsonQuery(); diff --git a/packages/rocketchat-api/server/v1/rooms.js b/packages/rocketchat-api/server/v1/rooms.js index aadbab826d0..0071953d414 100644 --- a/packages/rocketchat-api/server/v1/rooms.js +++ b/packages/rocketchat-api/server/v1/rooms.js @@ -120,9 +120,11 @@ RocketChat.API.v1.addRoute('rooms.upload/:rid', { authRequired: true }, { RocketChat.API.v1.addRoute('rooms.saveNotification', { authRequired: true }, { post() { const saveNotifications = (notifications, roomId) => { - Object.keys(notifications).map((notificationKey) => { - Meteor.runAsUser(this.userId, () => Meteor.call('saveNotificationSettings', roomId, notificationKey, notifications[notificationKey])); - }); + Object.keys(notifications).forEach((notificationKey) => + Meteor.runAsUser(this.userId, () => + Meteor.call('saveNotificationSettings', roomId, notificationKey, notifications[notificationKey]) + ) + ); }; const { roomId, notifications } = this.bodyParams; @@ -171,14 +173,18 @@ RocketChat.API.v1.addRoute('rooms.cleanHistory', { authRequired: true }, { const latest = new Date(this.bodyParams.latest); const oldest = new Date(this.bodyParams.oldest); - let inclusive = false; - if (typeof this.bodyParams.inclusive !== 'undefined') { - inclusive = this.bodyParams.inclusive; - } - - Meteor.runAsUser(this.userId, () => { - Meteor.call('cleanRoomHistory', { roomId: findResult._id, latest, oldest, inclusive, limit: this.bodyParams.limit, excludePinned: this.bodyParams.excludePinned, filesOnly: this.bodyParams.filesOnly, fromUsers: this.bodyParams.users }); - }); + const inclusive = this.bodyParams.inclusive || false; + + Meteor.runAsUser(this.userId, () => Meteor.call('cleanRoomHistory', { + roomId: findResult._id, + latest, + oldest, + inclusive, + limit: this.bodyParams.limit, + excludePinned: this.bodyParams.excludePinned, + filesOnly: this.bodyParams.filesOnly, + fromUsers: this.bodyParams.users, + })); return RocketChat.API.v1.success(); }, diff --git a/packages/rocketchat-api/server/v1/settings.js b/packages/rocketchat-api/server/v1/settings.js index 6cf87ca7a23..270b396b4a9 100644 --- a/packages/rocketchat-api/server/v1/settings.js +++ b/packages/rocketchat-api/server/v1/settings.js @@ -128,7 +128,7 @@ RocketChat.API.v1.addRoute('settings/:_id', { authRequired: true }, { RocketChat.API.v1.addRoute('service.configurations', { authRequired: false }, { get() { - const ServiceConfiguration = Package['service-configuration'].ServiceConfiguration; + const { ServiceConfiguration } = Package['service-configuration']; return RocketChat.API.v1.success({ configurations: ServiceConfiguration.configurations.find({}, { fields: { secret: 0 } }).fetch(), diff --git a/packages/rocketchat-api/server/v1/users.js b/packages/rocketchat-api/server/v1/users.js index 20e381d710d..f5f40dddcee 100644 --- a/packages/rocketchat-api/server/v1/users.js +++ b/packages/rocketchat-api/server/v1/users.js @@ -320,7 +320,7 @@ RocketChat.API.v1.addRoute('users.getPreferences', { authRequired: true }, { get() { const user = RocketChat.models.Users.findOneById(this.userId); if (user.settings) { - const preferences = user.settings.preferences; + const { preferences } = user.settings; preferences.language = user.language; return RocketChat.API.v1.success({ @@ -379,7 +379,7 @@ RocketChat.API.v1.addRoute('users.setPreferences', { authRequired: true }, { }; if (this.bodyParams.data.language) { - const language = this.bodyParams.data.language; + const { language } = this.bodyParams.data; delete this.bodyParams.data.language; userData.language = language; } diff --git a/packages/rocketchat-apps/client/admin/appInstall.js b/packages/rocketchat-apps/client/admin/appInstall.js index 4282798fd97..498410a3de3 100644 --- a/packages/rocketchat-apps/client/admin/appInstall.js +++ b/packages/rocketchat-apps/client/admin/appInstall.js @@ -88,7 +88,7 @@ Template.appInstall.events({ return; } - const files = $('#upload-app')[0].files; + const { files } = $('#upload-app')[0]; if (!(files instanceof FileList)) { return; } diff --git a/packages/rocketchat-apps/client/admin/apps.js b/packages/rocketchat-apps/client/admin/apps.js index 667424b7c1e..ac6a08fcb2a 100644 --- a/packages/rocketchat-apps/client/admin/apps.js +++ b/packages/rocketchat-apps/client/admin/apps.js @@ -44,6 +44,7 @@ Template.apps.onCreated(function() { index = i; return true; } + return false; }); apps.splice(index, 1); diff --git a/packages/rocketchat-apps/server/bridges/settings.js b/packages/rocketchat-apps/server/bridges/settings.js index 347a40ae39a..ef5028f13d3 100644 --- a/packages/rocketchat-apps/server/bridges/settings.js +++ b/packages/rocketchat-apps/server/bridges/settings.js @@ -22,9 +22,9 @@ export class AppSettingBridge { async getAll(appId) { console.log(`The App ${ appId } is getting all the settings.`); - return RocketChat.models.Settings.find({ _id: { $nin: this.disallowedSettings } }).fetch().map((s) => { - this.orch.getConverters().get('settings').convertToApp(s); - }); + return RocketChat.models.Settings.find({ _id: { $nin: this.disallowedSettings } }) + .fetch() + .map((s) => this.orch.getConverters().get('settings').convertToApp(s)); } async getOneById(id, appId) { diff --git a/packages/rocketchat-apps/server/communication/rest.js b/packages/rocketchat-apps/server/communication/rest.js index b9e887af5b0..65e8a7bcd95 100644 --- a/packages/rocketchat-apps/server/communication/rest.js +++ b/packages/rocketchat-apps/server/communication/rest.js @@ -256,7 +256,7 @@ export class AppsRestApi { return RocketChat.API.v1.notFound(`No App found by the id of: ${ this.urlParams.id }`); } - const settings = prl.getStorageItem().settings; + const { settings } = prl.getStorageItem(); const updated = []; this.bodyParams.settings.forEach((s) => { diff --git a/packages/rocketchat-apps/server/storage/logs-storage.js b/packages/rocketchat-apps/server/storage/logs-storage.js index d499b930cfc..78ef627ba59 100644 --- a/packages/rocketchat-apps/server/storage/logs-storage.js +++ b/packages/rocketchat-apps/server/storage/logs-storage.js @@ -7,12 +7,12 @@ export class AppRealLogsStorage extends AppLogStorage { this.db = model; } - find() { + find(...args) { return new Promise((resolve, reject) => { let docs; try { - docs = this.db.find(...arguments).fetch(); + docs = this.db.find(...args).fetch(); } catch (e) { return reject(e); } diff --git a/packages/rocketchat-assets/server/assets.js b/packages/rocketchat-assets/server/assets.js index 2a83db30396..b75243180c7 100644 --- a/packages/rocketchat-assets/server/assets.js +++ b/packages/rocketchat-assets/server/assets.js @@ -352,7 +352,7 @@ Meteor.startup(function() { }, 200); }); -const calculateClientHash = WebAppHashing.calculateClientHash; +const { calculateClientHash } = WebAppHashing; WebAppHashing.calculateClientHash = function(manifest, includeFilter, runtimeConfigOverride) { for (const key of Object.keys(assets)) { diff --git a/packages/rocketchat-authorization/server/models/Permissions.js b/packages/rocketchat-authorization/server/models/Permissions.js index 80d875ec70c..0e84bf19c25 100644 --- a/packages/rocketchat-authorization/server/models/Permissions.js +++ b/packages/rocketchat-authorization/server/models/Permissions.js @@ -1,6 +1,6 @@ class ModelPermissions extends RocketChat.models._Base { - constructor() { - super(...arguments); + constructor(...args) { + super(...args); } // FIND diff --git a/packages/rocketchat-authorization/server/models/Roles.js b/packages/rocketchat-authorization/server/models/Roles.js index 2f15a8c0fe7..b57261411af 100644 --- a/packages/rocketchat-authorization/server/models/Roles.js +++ b/packages/rocketchat-authorization/server/models/Roles.js @@ -1,6 +1,6 @@ class ModelRoles extends RocketChat.models._Base { - constructor() { - super(...arguments); + constructor(...args) { + super(...args); this.tryEnsureIndex({ name: 1 }); this.tryEnsureIndex({ scope: 1 }); } diff --git a/packages/rocketchat-autotranslate/client/lib/autotranslate.js b/packages/rocketchat-autotranslate/client/lib/autotranslate.js index 6f1fb0f1e3b..d4c7c47788e 100644 --- a/packages/rocketchat-autotranslate/client/lib/autotranslate.js +++ b/packages/rocketchat-autotranslate/client/lib/autotranslate.js @@ -9,7 +9,7 @@ RocketChat.AutoTranslate = { if (rid) { subscription = RocketChat.models.Subscriptions.findOne({ rid }, { fields: { autoTranslateLanguage: 1 } }); } - const language = subscription && subscription.autoTranslateLanguage || Meteor.user().language || window.defaultUserLanguage(); + const language = (subscription && subscription.autoTranslateLanguage) || Meteor.user().language || window.defaultUserLanguage(); if (language.indexOf('-') !== -1) { if (!_.findWhere(this.supportedLanguages, { language })) { return language.substr(0, 2); diff --git a/packages/rocketchat-autotranslate/client/views/autoTranslateFlexTab.js b/packages/rocketchat-autotranslate/client/views/autoTranslateFlexTab.js index 0324e432b3f..47f3feb7d8c 100644 --- a/packages/rocketchat-autotranslate/client/views/autoTranslateFlexTab.js +++ b/packages/rocketchat-autotranslate/client/views/autoTranslateFlexTab.js @@ -33,7 +33,7 @@ Template.autoTranslateFlexTab.helpers({ autoTranslateLanguage: 1, }, }); - const autoTranslateLanguage = sub && sub.autoTranslateLanguage || Meteor.user().language || window.defaultUserLanguage() || ''; + const autoTranslateLanguage = (sub && sub.autoTranslateLanguage) || Meteor.user().language || window.defaultUserLanguage() || ''; const supportedLanguages = Template.instance().supportedLanguages.get(); let language = _.findWhere(supportedLanguages, { language: autoTranslateLanguage }); if (language) { diff --git a/packages/rocketchat-autotranslate/server/autotranslate.js b/packages/rocketchat-autotranslate/server/autotranslate.js index 543a86a6eba..75a637fa043 100644 --- a/packages/rocketchat-autotranslate/server/autotranslate.js +++ b/packages/rocketchat-autotranslate/server/autotranslate.js @@ -93,7 +93,7 @@ class AutoTranslate { for (const tokenIndex in message.tokens) { if (message.tokens.hasOwnProperty(tokenIndex)) { - const token = message.tokens[tokenIndex].token; + const { token } = message.tokens[tokenIndex]; if (token.indexOf('notranslate') === -1) { const newToken = `{${ count++ }}`; message.msg = message.msg.replace(token, newToken); diff --git a/packages/rocketchat-channel-settings-mail-messages/client/views/mailMessagesInstructions.js b/packages/rocketchat-channel-settings-mail-messages/client/views/mailMessagesInstructions.js index 0d883659f63..3fd4e2a39de 100644 --- a/packages/rocketchat-channel-settings-mail-messages/client/views/mailMessagesInstructions.js +++ b/packages/rocketchat-channel-settings-mail-messages/client/views/mailMessagesInstructions.js @@ -111,10 +111,8 @@ Template.mailMessagesInstructions.events({ t.reset(true); }, 'click .js-send'(e, instance) { - const selectedUsers = instance.selectedUsers; - const selectedEmails = instance.selectedEmails; + const { selectedUsers, selectedEmails, selectedMessages } = instance; const $emailsInput = instance.$('[name="emails"]'); - const selectedMessages = instance.selectedMessages; const subject = instance.$('[name="subject"]').val(); if (!selectedUsers.get().length && !selectedEmails.get().length && $emailsInput.val().trim() === '') { @@ -171,7 +169,7 @@ Template.mailMessagesInstructions.events({ 'input [name="users"]'(e, t) { const input = e.target; const position = input.selectionEnd || input.selectionStart; - const length = input.value.length; + const { length } = input.value; const modified = filterNames(input.value); input.value = modified; document.activeElement === input && e && /input/i.test(e.type) && (input.selectionEnd = position + input.value.length - length); @@ -229,10 +227,10 @@ Template.mailMessagesInstructions.onRendered(function() { users.set(usersArr); }); - const selectedMessages = this.selectedMessages; + const { selectedMessages } = this; $('.messages-box .message').on('click', function() { - const id = this.id; + const { id } = this; const messages = selectedMessages.get(); if ($(this).hasClass('selected')) { diff --git a/packages/rocketchat-channel-settings/client/views/channelSettings.js b/packages/rocketchat-channel-settings/client/views/channelSettings.js index 4cf54d7f26d..1512aa25ccf 100644 --- a/packages/rocketchat-channel-settings/client/views/channelSettings.js +++ b/packages/rocketchat-channel-settings/client/views/channelSettings.js @@ -150,13 +150,15 @@ Template.channelSettingsEditing.events({ value: 'disabled', }]; - const value = this.value.get() ? 'enabled' : this.value.get() === false ? 'disabled' : 'default'; + const falseOrDisabled = this.value.get() === false ? 'disabled' : 'default'; + const value = this.value.get() ? 'enabled' : falseOrDisabled; const config = { popoverClass: 'notifications-preferences', template: 'pushNotificationsPopover', data: { change : (value) => { - const realValue = value === 'enabled' ? true : value === 'disabled' ? false : undefined; + const falseOrUndefined = value === 'disabled' ? false : undefined; + const realValue = value === 'enabled' ? true : falseOrUndefined; return this.value.set(realValue); }, value, @@ -695,7 +697,7 @@ Template.channelSettingsEditing.helpers({ }, retentionEnabled(value) { const { room } = Template.instance(); - return value || value === undefined && retentionEnabled(room); + return (value || value === undefined) && retentionEnabled(room); }, retentionMaxAgeLabel(label) { const { room } = Template.instance(); diff --git a/packages/rocketchat-channel-settings/server/functions/saveRoomType.js b/packages/rocketchat-channel-settings/server/functions/saveRoomType.js index b11341d88a1..a4319609dbd 100644 --- a/packages/rocketchat-channel-settings/server/functions/saveRoomType.js +++ b/packages/rocketchat-channel-settings/server/functions/saveRoomType.js @@ -28,11 +28,11 @@ RocketChat.saveRoomType = function(rid, roomType, user, sendMessage = true) { let message; if (roomType === 'c') { message = TAPi18n.__('Channel', { - lng: user && user.language || RocketChat.settings.get('language') || 'en', + lng: (user && user.language) || RocketChat.settings.get('language') || 'en', }); } else { message = TAPi18n.__('Private_Group', { - lng: user && user.language || RocketChat.settings.get('language') || 'en', + lng: (user && user.language) || RocketChat.settings.get('language') || 'en', }); } RocketChat.models.Messages.createRoomSettingsChangedWithTypeRoomIdMessageAndUser('room_changed_privacy', rid, message, user); diff --git a/packages/rocketchat-cors/cors.js b/packages/rocketchat-cors/cors.js index a75a2e4629a..33bfeaed106 100644 --- a/packages/rocketchat-cors/cors.js +++ b/packages/rocketchat-cors/cors.js @@ -65,12 +65,12 @@ WebApp.rawConnectHandlers.use(function(req, res, next) { res.setHeader('Access-Control-Allow-Origin', '*'); } - const setHeader = res.setHeader; - res.setHeader = function(key, val) { + const { setHeader } = res; + res.setHeader = function(key, val, ...args) { if (key.toLowerCase() === 'access-control-allow-origin' && val === 'http://meteor.local') { return; } - return setHeader.apply(this, arguments); + return setHeader.apply(this, [key, val, ...args]); }; return next(); }); @@ -86,10 +86,10 @@ const oldHttpServerListeners = WebApp.httpServer.listeners('request').slice(0); WebApp.httpServer.removeAllListeners('request'); -WebApp.httpServer.addListener('request', function(req, res) { +WebApp.httpServer.addListener('request', function(req, res, ...args) { const next = () => { for (const oldListener of oldHttpServerListeners) { - oldListener.apply(WebApp.httpServer, arguments); + oldListener.apply(WebApp.httpServer, [req, res, ...args]); } }; diff --git a/packages/rocketchat-crowd/client/loginHelper.js b/packages/rocketchat-crowd/client/loginHelper.js index 188e7f02941..3767f50ccd4 100644 --- a/packages/rocketchat-crowd/client/loginHelper.js +++ b/packages/rocketchat-crowd/client/loginHelper.js @@ -1,12 +1,9 @@ -Meteor.loginWithCrowd = function(username, password, callback) { - // Retrieve arguments as array - const args = []; - for (let i = 0; i < arguments.length; i++) { - args.push(arguments[i]); - } +Meteor.loginWithCrowd = function(...args) { // Pull username and password - username = args.shift(); - password = args.shift(); + const username = args.shift(); + const password = args.shift(); + const callback = args.shift(); + const loginRequest = { crowd: true, username, @@ -15,12 +12,11 @@ Meteor.loginWithCrowd = function(username, password, callback) { Accounts.callLoginMethod({ methodArguments: [loginRequest], userCallback(error) { - if (error) { - if (callback) { - callback(error); + if (callback) { + if (error) { + return callback(error); } - } else if (callback) { - callback(); + return callback(); } }, }); diff --git a/packages/rocketchat-custom-oauth/server/custom_oauth_server.js b/packages/rocketchat-custom-oauth/server/custom_oauth_server.js index eb5d4326e86..416f87128ad 100644 --- a/packages/rocketchat-custom-oauth/server/custom_oauth_server.js +++ b/packages/rocketchat-custom-oauth/server/custom_oauth_server.js @@ -326,11 +326,11 @@ export class CustomOAuth { } -const updateOrCreateUserFromExternalService = Accounts.updateOrCreateUserFromExternalService; -Accounts.updateOrCreateUserFromExternalService = function(/* serviceName, serviceData, options*/) { +const { updateOrCreateUserFromExternalService } = Accounts; +Accounts.updateOrCreateUserFromExternalService = function(...args /* serviceName, serviceData, options*/) { for (const hook of BeforeUpdateOrCreateUserFromExternalService) { - hook.apply(this, arguments); + hook.apply(this, args); } - return updateOrCreateUserFromExternalService.apply(this, arguments); + return updateOrCreateUserFromExternalService.apply(this, args); }; diff --git a/packages/rocketchat-custom-sounds/client/admin/soundEdit.js b/packages/rocketchat-custom-sounds/client/admin/soundEdit.js index 99d4ae1e47d..adfad401baf 100644 --- a/packages/rocketchat-custom-sounds/client/admin/soundEdit.js +++ b/packages/rocketchat-custom-sounds/client/admin/soundEdit.js @@ -27,7 +27,7 @@ Template.soundEdit.events({ 'change input[type=file]'(ev) { const e = (ev.originalEvent != null) ? ev.originalEvent : ev; - let files = e.target.files; + let { files } = e.target; if (e.target.files == null || files.length === 0) { if (e.dataTransfer.files != null) { files = e.dataTransfer.files; diff --git a/packages/rocketchat-custom-sounds/client/admin/soundInfo.js b/packages/rocketchat-custom-sounds/client/admin/soundInfo.js index 3c05661e44f..ca40311d815 100644 --- a/packages/rocketchat-custom-sounds/client/admin/soundInfo.js +++ b/packages/rocketchat-custom-sounds/client/admin/soundInfo.js @@ -38,7 +38,7 @@ Template.soundInfo.events({ e.preventDefault(); const sound = instance.sound.get(); if (sound != null) { - const _id = sound._id; + const { _id } = sound; modal.open({ title: t('Are_you_sure'), text: t('Custom_Sound_Delete_Warning'), diff --git a/packages/rocketchat-emoji-custom/admin/emojiEdit.js b/packages/rocketchat-emoji-custom/admin/emojiEdit.js index f7f20b9d854..b6b12d5701f 100644 --- a/packages/rocketchat-emoji-custom/admin/emojiEdit.js +++ b/packages/rocketchat-emoji-custom/admin/emojiEdit.js @@ -27,7 +27,7 @@ Template.emojiEdit.events({ 'change input[type=file]'(ev) { const e = ev.originalEvent != null ? ev.originalEvent : ev; - let files = e.target.files; + let { files } = e.target; if (files == null || files.length === 0) { if (e.dataTransfer != null && e.dataTransfer.files != null) { files = e.dataTransfer.files; diff --git a/packages/rocketchat-emoji-custom/admin/emojiInfo.js b/packages/rocketchat-emoji-custom/admin/emojiInfo.js index 76574f0b6c2..17ca686acfb 100644 --- a/packages/rocketchat-emoji-custom/admin/emojiInfo.js +++ b/packages/rocketchat-emoji-custom/admin/emojiInfo.js @@ -46,7 +46,7 @@ Template.emojiInfo.events({ e.preventDefault(); const emoji = instance.emoji.get(); if (emoji != null) { - const _id = emoji._id; + const { _id } = emoji; modal.open({ title: t('Are_you_sure'), text: t('Custom_Emoji_Delete_Warning'), diff --git a/packages/rocketchat-emoji/client/emojiPicker.js b/packages/rocketchat-emoji/client/emojiPicker.js index 49497f89814..31094181ae5 100644 --- a/packages/rocketchat-emoji/client/emojiPicker.js +++ b/packages/rocketchat-emoji/client/emojiPicker.js @@ -65,7 +65,7 @@ function getEmojisBySearchTerm(searchTerm) { if (searchRegExp.test(emoji)) { const emojiObject = RocketChat.emoji.list[emoji]; - const emojiPackage = emojiObject.emojiPackage; + const { emojiPackage } = emojiObject; let tone = ''; emoji = emoji.replace(/:/g, ''); @@ -228,7 +228,7 @@ Template.emojiPicker.events({ 'click .emoji-list li'(event, instance) { event.stopPropagation(); - const emoji = event.currentTarget.dataset.emoji; + const { emoji } = event.currentTarget.dataset; const actualTone = instance.tone; let tone = ''; diff --git a/packages/rocketchat-emoji/client/lib/EmojiPicker.js b/packages/rocketchat-emoji/client/lib/EmojiPicker.js index 12f18daf35c..e305ce3f208 100644 --- a/packages/rocketchat-emoji/client/lib/EmojiPicker.js +++ b/packages/rocketchat-emoji/client/lib/EmojiPicker.js @@ -57,8 +57,7 @@ RocketChat.EmojiPicker = { const windowHeight = window.innerHeight; const windowBorder = 10; const sourcePos = $(this.source).offset(); - const left = sourcePos.left; - const top = sourcePos.top; + const { left, top } = sourcePos; const cssProperties = { top, left }; if (top + this.height >= windowHeight) { diff --git a/packages/rocketchat-emoji/client/lib/emojiRenderer.js b/packages/rocketchat-emoji/client/lib/emojiRenderer.js index 2f91e74ea4d..6e70f4d28c7 100644 --- a/packages/rocketchat-emoji/client/lib/emojiRenderer.js +++ b/packages/rocketchat-emoji/client/lib/emojiRenderer.js @@ -1,7 +1,7 @@ /* globals HTML, isSetNotNull, renderEmoji:true */ renderEmoji = function(emoji) { if (isSetNotNull(() => RocketChat.emoji.list[emoji].emojiPackage)) { - const emojiPackage = RocketChat.emoji.list[emoji].emojiPackage; + const { emojiPackage } = RocketChat.emoji.list[emoji]; return RocketChat.emoji.packages[emojiPackage].render(emoji); } }; @@ -13,7 +13,7 @@ Template.registerHelper('renderEmoji', new Template('renderEmoji', function() { const emoji = Blaze.getData(view); if (isSetNotNull(() => RocketChat.emoji.list[emoji].emojiPackage)) { - const emojiPackage = RocketChat.emoji.list[emoji].emojiPackage; + const { emojiPackage } = RocketChat.emoji.list[emoji]; return new HTML.Raw(RocketChat.emoji.packages[emojiPackage].render(emoji)); } diff --git a/packages/rocketchat-error-handler/server/lib/RocketChat.ErrorHandler.js b/packages/rocketchat-error-handler/server/lib/RocketChat.ErrorHandler.js index 08e557b4d8f..4a8b611259e 100644 --- a/packages/rocketchat-error-handler/server/lib/RocketChat.ErrorHandler.js +++ b/packages/rocketchat-error-handler/server/lib/RocketChat.ErrorHandler.js @@ -33,12 +33,12 @@ class ErrorHandler { const self = this; const originalMeteorDebug = Meteor._debug; - Meteor._debug = function(message, stack) { + Meteor._debug = function(message, stack, ...args) { if (!self.reporting) { return originalMeteorDebug.call(this, message, stack); } self.trackError(message, stack); - return originalMeteorDebug.apply(this, arguments); + return originalMeteorDebug.apply(this, [message, stack, ...args]); }; } diff --git a/packages/rocketchat-file-upload/server/lib/FileUpload.js b/packages/rocketchat-file-upload/server/lib/FileUpload.js index 40d7f2c63a4..a5e0ce2d360 100644 --- a/packages/rocketchat-file-upload/server/lib/FileUpload.js +++ b/packages/rocketchat-file-upload/server/lib/FileUpload.js @@ -112,7 +112,7 @@ Object.assign(FileUpload, { if (err != null) { console.error(err); } - const size = fs.lstatSync(tempFilePath).size; + const { size } = fs.lstatSync(tempFilePath); this.getCollection().direct.update({ _id: file._id }, { $set: { size } }); future.return(); })); @@ -170,7 +170,7 @@ Object.assign(FileUpload, { .then(Meteor.bindEnvironment(() => { fs.unlink(tmpFile, Meteor.bindEnvironment(() => { fs.rename(`${ tmpFile }.tmp`, tmpFile, Meteor.bindEnvironment(() => { - const size = fs.lstatSync(tmpFile).size; + const { size } = fs.lstatSync(tmpFile); this.getCollection().direct.update({ _id: file._id }, { $set: { size, diff --git a/packages/rocketchat-file/file.server.js b/packages/rocketchat-file/file.server.js index 0426a1e48eb..bb36379426f 100644 --- a/packages/rocketchat-file/file.server.js +++ b/packages/rocketchat-file/file.server.js @@ -38,7 +38,7 @@ RocketChatFile.GridFS = class { this.name = name; this.transformWrite = transformWrite; const mongo = Package.mongo.MongoInternals.NpmModule; - const db = Package.mongo.MongoInternals.defaultRemoteCollectionDriver().mongo.db; + const { db } = Package.mongo.MongoInternals.defaultRemoteCollectionDriver().mongo; this.store = new Grid(db, mongo); this.findOneSync = Meteor.wrapAsync(this.store.collection(this.name).findOne.bind(this.store.collection(this.name))); this.removeSync = Meteor.wrapAsync(this.store.remove.bind(this.store)); diff --git a/packages/rocketchat-graphql/server/mocks/accounts/graphql-api.js b/packages/rocketchat-graphql/server/mocks/accounts/graphql-api.js index b94a295187f..764bce7a35d 100644 --- a/packages/rocketchat-graphql/server/mocks/accounts/graphql-api.js +++ b/packages/rocketchat-graphql/server/mocks/accounts/graphql-api.js @@ -5,7 +5,7 @@ // See: https://github.com/meteor/meteor/blob/a362e20a37547362b581fed52f7171d022e83b62/packages/promise/server.js // Opened issue: https://github.com/js-accounts/graphql/issues/16 export const authenticated = (Accounts, func) => (async(root, args, context, info) => { - const authToken = context.authToken; + const { authToken } = context; if (!authToken || authToken === '' || authToken === null) { throw new Error('Unable to find authorization token in request'); diff --git a/packages/rocketchat-iframe-login/iframe_client.js b/packages/rocketchat-iframe-login/iframe_client.js index 42ac806a767..fc883fd3819 100644 --- a/packages/rocketchat-iframe-login/iframe_client.js +++ b/packages/rocketchat-iframe-login/iframe_client.js @@ -2,10 +2,10 @@ import _ from 'underscore'; -const _unstoreLoginToken = Accounts._unstoreLoginToken; -Accounts._unstoreLoginToken = function() { +const { _unstoreLoginToken } = Accounts; +Accounts._unstoreLoginToken = function(...args) { RocketChat.iframeLogin.tryLogin(); - _unstoreLoginToken.apply(Accounts, arguments); + _unstoreLoginToken.apply(Accounts, args); }; class IframeLogin { @@ -54,7 +54,7 @@ class IframeLogin { }, }; - let iframeUrl = this.iframeUrl; + let { iframeUrl } = this; let separator = '?'; if (iframeUrl.indexOf('?') > -1) { separator = '&'; diff --git a/packages/rocketchat-importer-hipchat/server/importer.js b/packages/rocketchat-importer-hipchat/server/importer.js index f9c5ff64ab9..6f11bd2b499 100644 --- a/packages/rocketchat-importer-hipchat/server/importer.js +++ b/packages/rocketchat-importer-hipchat/server/importer.js @@ -23,7 +23,7 @@ export class HipChatImporter extends Base { prepare(dataURI, sentContentType, fileName) { super.prepare(dataURI, sentContentType, fileName); - const image = RocketChatFile.dataURIParse(dataURI).image; + const { image } = RocketChatFile.dataURIParse(dataURI); // const contentType = ref.contentType; const zip = new this.AdmZip(new Buffer(image, 'base64')); const zipEntries = zip.getEntries(); diff --git a/packages/rocketchat-importer/client/admin/adminImportPrepare.js b/packages/rocketchat-importer/client/admin/adminImportPrepare.js index edfdaa0560b..164aa85eb81 100644 --- a/packages/rocketchat-importer/client/admin/adminImportPrepare.js +++ b/packages/rocketchat-importer/client/admin/adminImportPrepare.js @@ -38,7 +38,7 @@ Template.adminImportPrepare.events({ files = (e.dataTransfer != null ? e.dataTransfer.files : undefined) || []; } - return Array.from(files).map((file) => { + Array.from(files).forEach((file) => { template.preparing.set(true); const reader = new FileReader(); diff --git a/packages/rocketchat-integrations/server/lib/triggerHandler.js b/packages/rocketchat-integrations/server/lib/triggerHandler.js index e84a9d4ff34..03037c94877 100644 --- a/packages/rocketchat-integrations/server/lib/triggerHandler.js +++ b/packages/rocketchat-integrations/server/lib/triggerHandler.js @@ -342,48 +342,48 @@ RocketChat.integrations.triggerHandler = new class RocketChatIntegrationHandler } } - eventNameArgumentsToObject() { + eventNameArgumentsToObject(...args) { const argObject = { - event: arguments[0], + event: args[0], }; switch (argObject.event) { case 'sendMessage': - if (arguments.length >= 3) { - argObject.message = arguments[1]; - argObject.room = arguments[2]; + if (args.length >= 3) { + argObject.message = args[1]; + argObject.room = args[2]; } break; case 'fileUploaded': - if (arguments.length >= 2) { - const arghhh = arguments[1]; + if (args.length >= 2) { + const arghhh = args[1]; argObject.user = arghhh.user; argObject.room = arghhh.room; argObject.message = arghhh.message; } break; case 'roomArchived': - if (arguments.length >= 3) { - argObject.room = arguments[1]; - argObject.user = arguments[2]; + if (args.length >= 3) { + argObject.room = args[1]; + argObject.user = args[2]; } break; case 'roomCreated': - if (arguments.length >= 3) { - argObject.owner = arguments[1]; - argObject.room = arguments[2]; + if (args.length >= 3) { + argObject.owner = args[1]; + argObject.room = args[2]; } break; case 'roomJoined': case 'roomLeft': - if (arguments.length >= 3) { - argObject.user = arguments[1]; - argObject.room = arguments[2]; + if (args.length >= 3) { + argObject.user = args[1]; + argObject.room = args[2]; } break; case 'userCreated': - if (arguments.length >= 2) { - argObject.user = arguments[1]; + if (args.length >= 2) { + argObject.user = args[1]; } break; default: @@ -479,10 +479,10 @@ RocketChat.integrations.triggerHandler = new class RocketChatIntegrationHandler } } - executeTriggers() { - logger.outgoing.debug('Execute Trigger:', arguments[0]); + executeTriggers(...args) { + logger.outgoing.debug('Execute Trigger:', args[0]); - const argObject = this.eventNameArgumentsToObject(...arguments); + const argObject = this.eventNameArgumentsToObject(...args); const { event, message, room } = argObject; // Each type of event should have an event and a room attached, otherwise we @@ -793,7 +793,7 @@ RocketChat.integrations.triggerHandler = new class RocketChatIntegrationHandler throw new Meteor.Error('history-data-must-be-defined', 'The history data must be defined to replay an integration.'); } - const event = history.event; + const { event } = history; const message = RocketChat.models.Messages.findOneById(history.data.message_id); const room = RocketChat.models.Rooms.findOneById(history.data.channel_id); const user = RocketChat.models.Users.findOneById(history.data.user_id); diff --git a/packages/rocketchat-integrations/server/triggers.js b/packages/rocketchat-integrations/server/triggers.js index ce0ebdbedda..1960615f602 100644 --- a/packages/rocketchat-integrations/server/triggers.js +++ b/packages/rocketchat-integrations/server/triggers.js @@ -1,6 +1,6 @@ const callbackHandler = function _callbackHandler(eventType) { - return function _wrapperFunction() { - return RocketChat.integrations.triggerHandler.executeTriggers(eventType, ...arguments); + return function _wrapperFunction(...args) { + return RocketChat.integrations.triggerHandler.executeTriggers(eventType, ...args); }; }; diff --git a/packages/rocketchat-katex/katex.js b/packages/rocketchat-katex/katex.js index 55522a7d638..de1cad4c873 100644 --- a/packages/rocketchat-katex/katex.js +++ b/packages/rocketchat-katex/katex.js @@ -101,7 +101,7 @@ class Katex { const outer = new Boundary; // The closing delimiter matching to the opening one - const closer = opening_delimiter_match.options.closer; + const { closer } = opening_delimiter_match.options; outer.start = opening_delimiter_match.pos; inner.start = opening_delimiter_match.pos + closer.length; diff --git a/packages/rocketchat-ldap/client/loginHelper.js b/packages/rocketchat-ldap/client/loginHelper.js index 67c7feb3521..3fe0d15a9da 100644 --- a/packages/rocketchat-ldap/client/loginHelper.js +++ b/packages/rocketchat-ldap/client/loginHelper.js @@ -2,30 +2,17 @@ // customLdapOptions should be passed in if you want to override LDAP_DEFAULTS // on any particular call (if you have multiple ldap servers you'd like to connect to) // You'll likely want to set the dn value here {dn: "..."} -Meteor.loginWithLDAP = function(username, password, customLdapOptions, callback) { - // Retrieve arguments as array - const args = []; - for (let i = 0; i < arguments.length; i++) { - args.push(arguments[i]); - } +Meteor.loginWithLDAP = function(...args) { // Pull username and password - username = args.shift(); - password = args.shift(); + const username = args.shift(); + const password = args.shift(); // Check if last argument is a function // if it is, pop it off and set callback to it - if (typeof args[args.length - 1] === 'function') { - callback = args.pop(); - } else { - callback = null; - } + const callback = typeof args[args.length - 1] === 'function' ? args.pop() : null; // if args still holds options item, grab it - if (args.length > 0) { - customLdapOptions = args.shift(); - } else { - customLdapOptions = {}; - } + const customLdapOptions = args.length > 0 ? args.shift() : {}; // Set up loginRequest object const loginRequest = { diff --git a/packages/rocketchat-ldap/server/sync.js b/packages/rocketchat-ldap/server/sync.js index 18b6130b358..000da3b5848 100644 --- a/packages/rocketchat-ldap/server/sync.js +++ b/packages/rocketchat-ldap/server/sync.js @@ -129,11 +129,11 @@ export function getDataToSyncUserData(ldapUser, user) { // TODO: Find a better solution. const dKeys = userField.split('.'); const lastKey = _.last(dKeys); - _.reduce(dKeys, (obj, currKey) => - ((currKey === lastKey) + _.reduce(dKeys, (obj, currKey) => ( + (currKey === lastKey) ? obj[currKey] = tmpLdapField - : obj[currKey] = obj[currKey] || {}) - , userData); + : obj[currKey] = obj[currKey] || {} + ), userData); logger.debug(`user.${ userField } changed to: ${ tmpLdapField }`); } } diff --git a/packages/rocketchat-lib/client/Notifications.js b/packages/rocketchat-lib/client/Notifications.js index dbba3281ec3..4b8a5470e6f 100644 --- a/packages/rocketchat-lib/client/Notifications.js +++ b/packages/rocketchat-lib/client/Notifications.js @@ -1,5 +1,5 @@ RocketChat.Notifications = new class { - constructor() { + constructor(...args) { this.logged = Meteor.userId() !== null; this.loginCb = []; Tracker.autorun(() => { @@ -16,10 +16,10 @@ RocketChat.Notifications = new class { this.streamUser = new Meteor.Streamer('notify-user'); if (this.debug === true) { this.onAll(function() { - return console.log('RocketChat.Notifications: onAll', arguments); + return console.log('RocketChat.Notifications: onAll', args); }); this.onUser(function() { - return console.log('RocketChat.Notifications: onAll', arguments); + return console.log('RocketChat.Notifications: onAll', args); }); } } @@ -32,21 +32,21 @@ RocketChat.Notifications = new class { } notifyRoom(room, eventName, ...args) { if (this.debug === true) { - console.log('RocketChat.Notifications: notifyRoom', arguments); + console.log('RocketChat.Notifications: notifyRoom', [room, eventName, ...args]); } args.unshift(`${ room }/${ eventName }`); return this.streamRoom.emit.apply(this.streamRoom, args); } notifyUser(userId, eventName, ...args) { if (this.debug === true) { - console.log('RocketChat.Notifications: notifyUser', arguments); + console.log('RocketChat.Notifications: notifyUser', [userId, eventName, ...args]); } args.unshift(`${ userId }/${ eventName }`); return this.streamUser.emit.apply(this.streamUser, args); } notifyUsersOfRoom(room, eventName, ...args) { if (this.debug === true) { - console.log('RocketChat.Notifications: notifyUsersOfRoom', arguments); + console.log('RocketChat.Notifications: notifyUsersOfRoom', [room, eventName, ...args]); } args.unshift(`${ room }/${ eventName }`); return this.streamRoomUsers.emit.apply(this.streamRoomUsers, args); @@ -60,7 +60,7 @@ RocketChat.Notifications = new class { onRoom(room, eventName, callback) { if (this.debug === true) { this.streamRoom.on(room, function() { - return console.log(`RocketChat.Notifications: onRoom ${ room }`, arguments); + return console.log(`RocketChat.Notifications: onRoom ${ room }`, [room, eventName, callback]); }); } return this.streamRoom.on(`${ room }/${ eventName }`, callback); diff --git a/packages/rocketchat-lib/client/lib/cachedCollection.js b/packages/rocketchat-lib/client/lib/cachedCollection.js index 5c043be7d68..aabc101b42a 100644 --- a/packages/rocketchat-lib/client/lib/cachedCollection.js +++ b/packages/rocketchat-lib/client/lib/cachedCollection.js @@ -9,7 +9,7 @@ class CachedCollectionManager { this.loginCb = []; this.logged = false; - const _unstoreLoginToken = Accounts._unstoreLoginToken; + const { _unstoreLoginToken } = Accounts; Accounts._unstoreLoginToken = (...args) => { _unstoreLoginToken.apply(Accounts, args); this.clearAllCacheOnLogout(); @@ -20,7 +20,7 @@ class CachedCollectionManager { Meteor.setTimeout(() => { let connectionWasOnline = true; Tracker.autorun(() => { - const connected = Meteor.connection.status().connected; + const { connected } = Meteor.connection.status(); if (connected === true && connectionWasOnline === false) { for (const cb of this.reconnectCb) { diff --git a/packages/rocketchat-lib/client/lib/openRoom.js b/packages/rocketchat-lib/client/lib/openRoom.js index 2565e36d124..9625303b724 100644 --- a/packages/rocketchat-lib/client/lib/openRoom.js +++ b/packages/rocketchat-lib/client/lib/openRoom.js @@ -9,7 +9,7 @@ function openRoom(type, name) { return Meteor.defer(() => currentTracker = Tracker.autorun(function(c) { const user = Meteor.user(); - if ((user && user.username == null) || user == null && RocketChat.settings.get('Accounts_AllowAnonymousRead') === false) { + if ((user && user.username == null) || (user == null && RocketChat.settings.get('Accounts_AllowAnonymousRead') === false)) { BlazeLayout.render('main'); return; } diff --git a/packages/rocketchat-lib/client/models/_Base.js b/packages/rocketchat-lib/client/models/_Base.js index 55623317be6..203a3859703 100644 --- a/packages/rocketchat-lib/client/models/_Base.js +++ b/packages/rocketchat-lib/client/models/_Base.js @@ -9,36 +9,36 @@ RocketChat.models._Base = class { return this.model = new Mongo.Collection(this._baseName() + name); } - find() { - return this.model.find.apply(this.model, arguments); + find(...args) { + return this.model.find.apply(this.model, args); } - findOne() { - return this.model.findOne.apply(this.model, arguments); + findOne(...args) { + return this.model.findOne.apply(this.model, args); } - insert() { - return this.model.insert.apply(this.model, arguments); + insert(...args) { + return this.model.insert.apply(this.model, args); } - update() { - return this.model.update.apply(this.model, arguments); + update(...args) { + return this.model.update.apply(this.model, args); } - upsert() { - return this.model.upsert.apply(this.model, arguments); + upsert(...args) { + return this.model.upsert.apply(this.model, args); } - remove() { - return this.model.remove.apply(this.model, arguments); + remove(...args) { + return this.model.remove.apply(this.model, args); } - allow() { - return this.model.allow.apply(this.model, arguments); + allow(...args) { + return this.model.allow.apply(this.model, args); } - deny() { - return this.model.deny.apply(this.model, arguments); + deny(...args) { + return this.model.deny.apply(this.model, args); } ensureIndex() {} diff --git a/packages/rocketchat-lib/client/views/customFieldsForm.js b/packages/rocketchat-lib/client/views/customFieldsForm.js index 04e65c43099..469fcb933ff 100644 --- a/packages/rocketchat-lib/client/views/customFieldsForm.js +++ b/packages/rocketchat-lib/client/views/customFieldsForm.js @@ -25,7 +25,7 @@ Template.customFieldsForm.helpers({ return customFieldsArray; }, selectedField(current, field) { - const formData = Template.instance().formData; + const { formData } = Template.instance(); if (typeof formData[field.fieldName] !== 'undefined') { return formData[field.fieldName] === current; @@ -34,7 +34,7 @@ Template.customFieldsForm.helpers({ } }, fieldValue() { - const formData = Template.instance().formData; + const { formData } = Template.instance(); return formData[this.fieldName]; }, diff --git a/packages/rocketchat-lib/server/functions/Notifications.js b/packages/rocketchat-lib/server/functions/Notifications.js index b5c7ef93015..92e78e6774b 100644 --- a/packages/rocketchat-lib/server/functions/Notifications.js +++ b/packages/rocketchat-lib/server/functions/Notifications.js @@ -50,7 +50,7 @@ RocketChat.Notifications = new class { notifyAll(eventName, ...args) { if (this.debug === true) { - console.log('notifyAll', arguments); + console.log('notifyAll', [eventName, ...args]); } args.unshift(eventName); return this.streamAll.emit.apply(this.streamAll, args); @@ -58,7 +58,7 @@ RocketChat.Notifications = new class { notifyLogged(eventName, ...args) { if (this.debug === true) { - console.log('notifyLogged', arguments); + console.log('notifyLogged', [eventName, ...args]); } args.unshift(eventName); return this.streamLogged.emit.apply(this.streamLogged, args); @@ -66,7 +66,7 @@ RocketChat.Notifications = new class { notifyRoom(room, eventName, ...args) { if (this.debug === true) { - console.log('notifyRoom', arguments); + console.log('notifyRoom', [room, eventName, ...args]); } args.unshift(`${ room }/${ eventName }`); return this.streamRoom.emit.apply(this.streamRoom, args); @@ -74,7 +74,7 @@ RocketChat.Notifications = new class { notifyUser(userId, eventName, ...args) { if (this.debug === true) { - console.log('notifyUser', arguments); + console.log('notifyUser', [userId, eventName, ...args]); } args.unshift(`${ userId }/${ eventName }`); return this.streamUser.emit.apply(this.streamUser, args); @@ -82,7 +82,7 @@ RocketChat.Notifications = new class { notifyAllInThisInstance(eventName, ...args) { if (this.debug === true) { - console.log('notifyAll', arguments); + console.log('notifyAll', [eventName, ...args]); } args.unshift(eventName); return this.streamAll.emitWithoutBroadcast.apply(this.streamAll, args); @@ -90,7 +90,7 @@ RocketChat.Notifications = new class { notifyLoggedInThisInstance(eventName, ...args) { if (this.debug === true) { - console.log('notifyLogged', arguments); + console.log('notifyLogged', [eventName, ...args]); } args.unshift(eventName); return this.streamLogged.emitWithoutBroadcast.apply(this.streamLogged, args); @@ -98,7 +98,7 @@ RocketChat.Notifications = new class { notifyRoomInThisInstance(room, eventName, ...args) { if (this.debug === true) { - console.log('notifyRoomAndBroadcast', arguments); + console.log('notifyRoomAndBroadcast', [room, eventName, ...args]); } args.unshift(`${ room }/${ eventName }`); return this.streamRoom.emitWithoutBroadcast.apply(this.streamRoom, args); @@ -106,7 +106,7 @@ RocketChat.Notifications = new class { notifyUserInThisInstance(userId, eventName, ...args) { if (this.debug === true) { - console.log('notifyUserAndBroadcast', arguments); + console.log('notifyUserAndBroadcast', [userId, eventName, ...args]); } args.unshift(`${ userId }/${ eventName }`); return this.streamUser.emitWithoutBroadcast.apply(this.streamUser, args); diff --git a/packages/rocketchat-lib/server/functions/notifications/email.js b/packages/rocketchat-lib/server/functions/notifications/email.js index 58dc13d17ec..7635ea86502 100644 --- a/packages/rocketchat-lib/server/functions/notifications/email.js +++ b/packages/rocketchat-lib/server/functions/notifications/email.js @@ -13,7 +13,7 @@ RocketChat.settings.get('Email_Footer', (key, value) => { const divisorMessage = '
'; function getEmailContent({ message, user, room }) { - const lng = user && user.language || RocketChat.settings.get('language') || 'en'; + const lng = (user && user.language) || RocketChat.settings.get('language') || 'en'; const roomName = s.escapeHTML(`#${ RocketChat.roomTypes.getRoomName(room.t, room) }`); const userName = s.escapeHTML(RocketChat.settings.get('UI_Use_Real_Name') ? message.u.name || message.u.username : message.u.username); diff --git a/packages/rocketchat-lib/server/functions/saveCustomFieldsWithoutValidation.js b/packages/rocketchat-lib/server/functions/saveCustomFieldsWithoutValidation.js index 7aad5b326aa..b4280fddb7b 100644 --- a/packages/rocketchat-lib/server/functions/saveCustomFieldsWithoutValidation.js +++ b/packages/rocketchat-lib/server/functions/saveCustomFieldsWithoutValidation.js @@ -21,7 +21,7 @@ RocketChat.saveCustomFieldsWithoutValidation = function(userId, formData) { return; } - const modifyRecordField = customFieldsMeta[fieldName].modifyRecordField; + const { modifyRecordField } = customFieldsMeta[fieldName]; const update = {}; if (modifyRecordField.array) { update.$addToSet = {}; diff --git a/packages/rocketchat-lib/server/functions/sendMessage.js b/packages/rocketchat-lib/server/functions/sendMessage.js index 1360a84db20..765729497dd 100644 --- a/packages/rocketchat-lib/server/functions/sendMessage.js +++ b/packages/rocketchat-lib/server/functions/sendMessage.js @@ -134,7 +134,7 @@ RocketChat.sendMessage = function(user, message, room, upsert = false) { } if (message._id && upsert) { - const _id = message._id; + const { _id } = message; delete message._id; RocketChat.models.Messages.upsert({ _id, diff --git a/packages/rocketchat-lib/server/functions/setUsername.js b/packages/rocketchat-lib/server/functions/setUsername.js index 8f3045b81d7..20c317c9b03 100644 --- a/packages/rocketchat-lib/server/functions/setUsername.js +++ b/packages/rocketchat-lib/server/functions/setUsername.js @@ -45,9 +45,9 @@ RocketChat._setUsername = function(userId, u) { RocketChat.setUserAvatar(user, avatarData.blob, avatarData.contentType, service); gravatar = null; return true; - } else { - gravatar = avatarData; } + gravatar = avatarData; + return false; }); if (gravatar != null) { RocketChat.setUserAvatar(user, gravatar.blob, gravatar.contentType, 'gravatar'); diff --git a/packages/rocketchat-lib/server/lib/RateLimiter.js b/packages/rocketchat-lib/server/lib/RateLimiter.js index c7cced35c21..1555cd4abee 100644 --- a/packages/rocketchat-lib/server/lib/RateLimiter.js +++ b/packages/rocketchat-lib/server/lib/RateLimiter.js @@ -16,7 +16,7 @@ RocketChat.RateLimiter = new class { rateLimiter.increment(match); const rateLimitResult = rateLimiter.check(match); if (rateLimitResult.allowed) { - return fn.apply(null, arguments); + return fn.apply(null, args); } else { throw new Meteor.Error('error-too-many-requests', `Error, too many requests. Please slow down. You must wait ${ Math.ceil(rateLimitResult.timeToReset / 1000) } seconds before trying again.`, { timeToReset: rateLimitResult.timeToReset, diff --git a/packages/rocketchat-lib/server/lib/bugsnag.js b/packages/rocketchat-lib/server/lib/bugsnag.js index 43c1e46d9fe..a08d5027467 100644 --- a/packages/rocketchat-lib/server/lib/bugsnag.js +++ b/packages/rocketchat-lib/server/lib/bugsnag.js @@ -27,7 +27,7 @@ process.on('uncaughtException', Meteor.bindEnvironment((error) => { })); const originalMeteorDebug = Meteor._debug; -Meteor._debug = function() { - notify(...arguments); - return originalMeteorDebug(...arguments); +Meteor._debug = function(...args) { + notify(...args); + return originalMeteorDebug(...args); }; diff --git a/packages/rocketchat-lib/server/lib/debug.js b/packages/rocketchat-lib/server/lib/debug.js index 8afc8387b09..5ef15b457eb 100644 --- a/packages/rocketchat-lib/server/lib/debug.js +++ b/packages/rocketchat-lib/server/lib/debug.js @@ -44,18 +44,18 @@ const traceConnection = (enable, filter, prefix, name, connection, userId) => { }; const wrapMethods = function(name, originalHandler, methodsMap) { - methodsMap[name] = function() { + methodsMap[name] = function(...originalArgs) { traceConnection(Log_Trace_Methods, Log_Trace_Methods_Filter, 'method', name, this.connection, this.userId); const end = RocketChat.metrics.meteorMethods.startTimer({ method: name, has_connection: this.connection != null, has_user: this.userId != null, }); - const args = name === 'ufsWrite' ? Array.prototype.slice.call(arguments, 1) : arguments; + const args = name === 'ufsWrite' ? Array.prototype.slice.call(originalArgs, 1) : originalArgs; logger.method(name, '-> userId:', Meteor.userId(), ', arguments: ', args); this.unblock(); - const result = originalHandler.apply(this, arguments); + const result = originalHandler.apply(this, originalArgs); end(); return result; }; @@ -73,18 +73,18 @@ Meteor.methods = function(methodMap) { const originalMeteorPublish = Meteor.publish; Meteor.publish = function(name, func) { - return originalMeteorPublish(name, function() { + return originalMeteorPublish(name, function(...args) { traceConnection(Log_Trace_Subscriptions, Log_Trace_Subscriptions_Filter, 'subscription', name, this.connection, this.userId); - logger.publish(name, '-> userId:', this.userId, ', arguments: ', arguments); + logger.publish(name, '-> userId:', this.userId, ', arguments: ', args); const end = RocketChat.metrics.meteorSubscriptions.startTimer({ subscription: name }); const originalReady = this.ready; this.ready = function() { end(); - return originalReady.apply(this, arguments); + return originalReady.apply(this, args); }; - return func.apply(this, arguments); + return func.apply(this, args); }); }; diff --git a/packages/rocketchat-lib/server/lib/loginErrorMessageOverride.js b/packages/rocketchat-lib/server/lib/loginErrorMessageOverride.js index bdd3255b2ff..c9bb7a65cd8 100644 --- a/packages/rocketchat-lib/server/lib/loginErrorMessageOverride.js +++ b/packages/rocketchat-lib/server/lib/loginErrorMessageOverride.js @@ -1,5 +1,5 @@ // Do not disclose if user exists when password is invalid -const _runLoginHandlers = Accounts._runLoginHandlers; +const { _runLoginHandlers } = Accounts; Accounts._runLoginHandlers = function(methodInvocation, options) { const result = _runLoginHandlers.call(Accounts, methodInvocation, options); diff --git a/packages/rocketchat-lib/server/lib/processDirectEmail.js b/packages/rocketchat-lib/server/lib/processDirectEmail.js index 3c234649a95..c204d213295 100644 --- a/packages/rocketchat-lib/server/lib/processDirectEmail.js +++ b/packages/rocketchat-lib/server/lib/processDirectEmail.js @@ -75,7 +75,7 @@ RocketChat.processDirectEmail = function(email) { message.msg = prevMessageLink + message.msg; const subscription = RocketChat.models.Subscriptions.findOneByRoomIdAndUserId(message.rid, user._id); - if (subscription && subscription.blocked || subscription.blocker) { + if (subscription && (subscription.blocked || subscription.blocker)) { // room is blocked return false; } diff --git a/packages/rocketchat-lib/server/lib/sendNotificationsOnMessage.js b/packages/rocketchat-lib/server/lib/sendNotificationsOnMessage.js index 5cbdd3c0347..c1e92fd8097 100644 --- a/packages/rocketchat-lib/server/lib/sendNotificationsOnMessage.js +++ b/packages/rocketchat-lib/server/lib/sendNotificationsOnMessage.js @@ -134,6 +134,7 @@ const sendNotification = ({ return true; } + return false; }); } @@ -184,7 +185,7 @@ function sendAllNotifications(message, room) { }], }; - ['audio', 'desktop', 'mobile', 'email'].map((kind) => { + ['audio', 'desktop', 'mobile', 'email'].forEach((kind) => { const notificationField = `${ kind === 'mobile' ? 'mobilePush' : kind }Notifications`; const filter = { [notificationField]: 'all' }; diff --git a/packages/rocketchat-lib/server/methods/filterATAllTag.js b/packages/rocketchat-lib/server/methods/filterATAllTag.js index cbb1e0f5460..645311691d4 100644 --- a/packages/rocketchat-lib/server/methods/filterATAllTag.js +++ b/packages/rocketchat-lib/server/methods/filterATAllTag.js @@ -9,7 +9,7 @@ RocketChat.callbacks.add('beforeSaveMessage', function(message) { if (!RocketChat.authz.hasPermission(message.u._id, 'mention-all') && !RocketChat.authz.hasPermission(message.u._id, 'mention-all', message.rid)) { // Get the language of the user for the error notification. - const language = RocketChat.models.Users.findOneById(message.u._id).language; + const { language } = RocketChat.models.Users.findOneById(message.u._id); const action = TAPi18n.__('Notify_all_in_this_room', {}, language); // Add a notification to the chat, informing the user that this diff --git a/packages/rocketchat-lib/server/methods/filterATHereTag.js b/packages/rocketchat-lib/server/methods/filterATHereTag.js index ba8b17e0608..07cf9a9c536 100644 --- a/packages/rocketchat-lib/server/methods/filterATHereTag.js +++ b/packages/rocketchat-lib/server/methods/filterATHereTag.js @@ -9,7 +9,7 @@ RocketChat.callbacks.add('beforeSaveMessage', function(message) { if (!RocketChat.authz.hasPermission(message.u._id, 'mention-here') && !RocketChat.authz.hasPermission(message.u._id, 'mention-here', message.rid)) { // Get the language of the user for the error notification. - const language = RocketChat.models.Users.findOneById(message.u._id).language; + const { language } = RocketChat.models.Users.findOneById(message.u._id); const action = TAPi18n.__('Notify_active_in_this_room', {}, language); // Add a notification to the chat, informing the user that this diff --git a/packages/rocketchat-lib/server/models/Rooms.js b/packages/rocketchat-lib/server/models/Rooms.js index 86221c20701..75aad3b509a 100644 --- a/packages/rocketchat-lib/server/models/Rooms.js +++ b/packages/rocketchat-lib/server/models/Rooms.js @@ -2,8 +2,8 @@ import _ from 'underscore'; import s from 'underscore.string'; class ModelRooms extends RocketChat.models._Base { - constructor() { - super(...arguments); + constructor(...args) { + super(...args); this.tryEnsureIndex({ name: 1 }, { unique: 1, sparse: 1 }); this.tryEnsureIndex({ default: 1 }); diff --git a/packages/rocketchat-lib/server/models/Settings.js b/packages/rocketchat-lib/server/models/Settings.js index 37f7957b5e2..3cd5af4fb8c 100644 --- a/packages/rocketchat-lib/server/models/Settings.js +++ b/packages/rocketchat-lib/server/models/Settings.js @@ -1,6 +1,6 @@ class ModelSettings extends RocketChat.models._Base { - constructor() { - super(...arguments); + constructor(...args) { + super(...args); this.tryEnsureIndex({ blocked: 1 }, { sparse: 1 }); this.tryEnsureIndex({ hidden: 1 }, { sparse: 1 }); diff --git a/packages/rocketchat-lib/server/models/Subscriptions.js b/packages/rocketchat-lib/server/models/Subscriptions.js index b1a0372c141..1315c1df25c 100644 --- a/packages/rocketchat-lib/server/models/Subscriptions.js +++ b/packages/rocketchat-lib/server/models/Subscriptions.js @@ -1,6 +1,6 @@ class ModelSubscriptions extends RocketChat.models._Base { - constructor() { - super(...arguments); + constructor(...args) { + super(...args); this.tryEnsureIndex({ rid: 1, 'u._id': 1 }, { unique: 1 }); this.tryEnsureIndex({ rid: 1, 'u.username': 1 }); diff --git a/packages/rocketchat-lib/server/models/Users.js b/packages/rocketchat-lib/server/models/Users.js index 21710225339..5d31e45087b 100644 --- a/packages/rocketchat-lib/server/models/Users.js +++ b/packages/rocketchat-lib/server/models/Users.js @@ -2,8 +2,8 @@ import _ from 'underscore'; import s from 'underscore.string'; class ModelUsers extends RocketChat.models._Base { - constructor() { - super(...arguments); + constructor(...args) { + super(...args); this.tryEnsureIndex({ roles: 1 }, { sparse: 1 }); this.tryEnsureIndex({ name: 1 }); diff --git a/packages/rocketchat-lib/server/models/_Base.js b/packages/rocketchat-lib/server/models/_Base.js index dbf0334489b..18e7c471aa1 100644 --- a/packages/rocketchat-lib/server/models/_Base.js +++ b/packages/rocketchat-lib/server/models/_Base.js @@ -33,98 +33,98 @@ class ModelsBase { }; } - setUpdatedAt(/* record, checkQuery, query*/) { - return this._db.setUpdatedAt(...arguments); + setUpdatedAt(...args/* record, checkQuery, query*/) { + return this._db.setUpdatedAt(...args); } - find() { + find(...args) { try { - return this[this.origin].find(...arguments); + return this[this.origin].find(...args); } catch (e) { - console.error('Exception on find', e, ...arguments); + console.error('Exception on find', e, ...args); } } - findOne() { + findOne(...args) { try { - return this[this.origin].findOne(...arguments); + return this[this.origin].findOne(...args); } catch (e) { - console.error('Exception on find', e, ...arguments); + console.error('Exception on find', e, ...args); } } - findOneById() { + findOneById(...args) { try { - return this[this.origin].findOneById(...arguments); + return this[this.origin].findOneById(...args); } catch (e) { - console.error('Exception on find', e, ...arguments); + console.error('Exception on find', e, ...args); } } - findOneByIds(ids, options) { + findOneByIds(ids, options, ...args) { check(ids, [String]); try { return this[this.origin].findOneByIds(ids, options); } catch (e) { - console.error('Exception on find', e, ...arguments); + console.error('Exception on find', e, [ids, options, ...args]); } } - insert(/* record*/) { - return this._db.insert(...arguments); + insert(...args/* record*/) { + return this._db.insert(...args); } - update(/* query, update, options*/) { - return this._db.update(...arguments); + update(...args/* query, update, options*/) { + return this._db.update(...args); } - upsert(/* query, update*/) { - return this._db.upsert(...arguments); + upsert(...args/* query, update*/) { + return this._db.upsert(...args); } - remove(/* query*/) { - return this._db.remove(...arguments); + remove(...args/* query*/) { + return this._db.remove(...args); } - insertOrUpsert() { - return this._db.insertOrUpsert(...arguments); + insertOrUpsert(...args) { + return this._db.insertOrUpsert(...args); } - allow() { - return this._db.allow(...arguments); + allow(...args) { + return this._db.allow(...args); } - deny() { - return this._db.deny(...arguments); + deny(...args) { + return this._db.deny(...args); } - ensureIndex() { - return this._db.ensureIndex(...arguments); + ensureIndex(...args) { + return this._db.ensureIndex(...args); } - dropIndex() { - return this._db.dropIndex(...arguments); + dropIndex(...args) { + return this._db.dropIndex(...args); } - tryEnsureIndex() { - return this._db.tryEnsureIndex(...arguments); + tryEnsureIndex(...args) { + return this._db.tryEnsureIndex(...args); } - tryDropIndex() { - return this._db.tryDropIndex(...arguments); + tryDropIndex(...args) { + return this._db.tryDropIndex(...args); } - trashFind(/* query, options*/) { - return this._db.trashFind(...arguments); + trashFind(...args/* query, options*/) { + return this._db.trashFind(...args); } - trashFindOneById(/* _id, options*/) { - return this._db.trashFindOneById(...arguments); + trashFindOneById(...args/* _id, options*/) { + return this._db.trashFindOneById(...args); } - trashFindDeletedAfter(/* deletedAt, query, options*/) { - return this._db.trashFindDeletedAfter(...arguments); + trashFindDeletedAfter(...args/* deletedAt, query, options*/) { + return this._db.trashFindDeletedAfter(...args); } processQueryOptionsOnResult(result, options = {}) { @@ -219,6 +219,8 @@ class ModelsBase { if (fieldsToGet.length > 0) { return pickFields(record, fieldsToGet); } + + return null; }); } else { if (fieldsToRemove.length > 0) { diff --git a/packages/rocketchat-lib/server/models/_BaseDb.js b/packages/rocketchat-lib/server/models/_BaseDb.js index e339fb30053..9bf6e6e1102 100644 --- a/packages/rocketchat-lib/server/models/_BaseDb.js +++ b/packages/rocketchat-lib/server/models/_BaseDb.js @@ -87,16 +87,16 @@ class ModelsBaseDb extends EventEmitter { }; const self = this; - this.model.insert = function() { - return self.insert(...arguments); + this.model.insert = function(...args) { + return self.insert(...args); }; - this.model.update = function() { - return self.update(...arguments); + this.model.update = function(...args) { + return self.update(...args); }; - this.model.remove = function() { - return self.remove(...arguments); + this.model.remove = function(...args) { + return self.remove(...args); }; } @@ -110,14 +110,14 @@ class ModelsBaseDb extends EventEmitter { } } - find() { - this._doNotMixInclusionAndExclusionFields(arguments[1]); - return this.model.find(...arguments); + find(...args) { + this._doNotMixInclusionAndExclusionFields(args[1]); + return this.model.find(...args); } - findOne() { - this._doNotMixInclusionAndExclusionFields(arguments[1]); - return this.model.findOne(...arguments); + findOne(...args) { + this._doNotMixInclusionAndExclusionFields(args[1]); + return this.model.findOne(...args); } findOneById(_id, options) { @@ -198,10 +198,10 @@ class ModelsBaseDb extends EventEmitter { } } - insert(record) { + insert(record, ...args) { this.setUpdatedAt(record); - const result = this.originals.insert(...arguments); + const result = this.originals.insert(record, ...args); record._id = result; @@ -307,7 +307,7 @@ class ModelsBaseDb extends EventEmitter { insertOrUpsert(...args) { if (args[0] && args[0]._id) { - const _id = args[0]._id; + const { _id } = args[0]; delete args[0]._id; args.unshift({ _id, @@ -320,35 +320,35 @@ class ModelsBaseDb extends EventEmitter { } } - allow() { - return this.model.allow(...arguments); + allow(...args) { + return this.model.allow(...args); } - deny() { - return this.model.deny(...arguments); + deny(...args) { + return this.model.deny(...args); } - ensureIndex() { - return this.model._ensureIndex(...arguments); + ensureIndex(...args) { + return this.model._ensureIndex(...args); } - dropIndex() { - return this.model._dropIndex(...arguments); + dropIndex(...args) { + return this.model._dropIndex(...args); } - tryEnsureIndex() { + tryEnsureIndex(...args) { try { - return this.ensureIndex(...arguments); + return this.ensureIndex(...args); } catch (e) { - console.error('Error creating index:', this.name, '->', ...arguments, e); + console.error('Error creating index:', this.name, '->', ...args, e); } } - tryDropIndex() { + tryDropIndex(...args) { try { - return this.dropIndex(...arguments); + return this.dropIndex(...args); } catch (e) { - console.error('Error dropping index:', this.name, '->', ...arguments, e); + console.error('Error dropping index:', this.name, '->', ...args, e); } } diff --git a/packages/rocketchat-lib/server/startup/settingsOnLoadDirectReply.js b/packages/rocketchat-lib/server/startup/settingsOnLoadDirectReply.js index b172e520a93..54b746c7f39 100644 --- a/packages/rocketchat-lib/server/startup/settingsOnLoadDirectReply.js +++ b/packages/rocketchat-lib/server/startup/settingsOnLoadDirectReply.js @@ -1,6 +1,5 @@ import _ from 'underscore'; -import { IMAPIntercepter } from '../lib/interceptDirectReplyEmails.js'; -import { POP3Helper } from '../lib/interceptDirectReplyEmails.js'; +import { IMAPIntercepter, POP3Helper } from '../lib/interceptDirectReplyEmails.js'; const startEmailIntercepter = _.debounce(Meteor.bindEnvironment(function() { console.log('Starting Email Intercepter...'); diff --git a/packages/rocketchat-livechat/.app/client/lib/CustomFields.js b/packages/rocketchat-livechat/.app/client/lib/CustomFields.js index 36132c9aa71..4f37bf08c86 100644 --- a/packages/rocketchat-livechat/.app/client/lib/CustomFields.js +++ b/packages/rocketchat-livechat/.app/client/lib/CustomFields.js @@ -29,6 +29,6 @@ this.CustomFields = (function() { return { init, - setCustomField + setCustomField, }; }()); diff --git a/packages/rocketchat-livechat/.app/client/lib/LivechatFileUpload.js b/packages/rocketchat-livechat/.app/client/lib/LivechatFileUpload.js index 2f1b8082617..9d0b4e94221 100644 --- a/packages/rocketchat-livechat/.app/client/lib/LivechatFileUpload.js +++ b/packages/rocketchat-livechat/.app/client/lib/LivechatFileUpload.js @@ -1,36 +1,36 @@ -/* globals, fileUpload, Livechat, Handlebars */ -/* exported LivechatFileUpload */ +/* globals fileUpload, Livechat, Handlebars, showError, sendFileUpload */ +/* exported LivechatFileUpload, fileUpload, sendFileUpload */ import visitor from '../../imports/client/visitor'; import swal from 'sweetalert2'; -const handleRequestError = response => { +const handleRequestError = (response) => { if (!response.success) { let reason = t('FileUpload_Error'); switch (response.reason) { case 'error-type-not-allowed': - reason = t('FileUpload_MediaType_NotAccepted'); + reason = t('FileUpload_MediaType_NotAccepted'); break; case 'error-size-not-allowed': - reason = t('File_exceeds_allowed_size_of_bytes', {size: response.sizeAllowed}); + reason = t('File_exceeds_allowed_size_of_bytes', { size: response.sizeAllowed }); } swal({ text: reason, type: 'error', - timer: 4000 + timer: 4000, }); } -} +}; function sendFileRequest(file, roomId, token) { const url = `${ Meteor.absoluteUrl() }api/v1/livechat/upload/${ roomId }`; const form = new FormData(); - form.append('file', file) + form.append('file', file); const request = new XMLHttpRequest(); - request.open("POST", url); + request.open('POST', url); request.responseType = 'json'; - request.setRequestHeader("X-Visitor-Token", token); + request.setRequestHeader('X-Visitor-Token', token); request.onload = () => { if (request.status !== 200) { @@ -47,7 +47,7 @@ function sendFileRequest(file, roomId, token) { function readAsDataURL(file, callback) { const reader = new FileReader(); - reader.onload = ev => callback(ev.target.result, file); + reader.onload = (ev) => callback(ev.target.result, file); return reader.readAsDataURL(file); } @@ -60,7 +60,7 @@ function getUploadPreview(file, callback) { callback(file, null); } else if ((file.file.type.indexOf('audio') > -1) || (file.file.type.indexOf('video') > -1) || (file.file.type.indexOf('image') > -1)) { file.type = file.file.type.split('/')[0]; - return readAsDataURL(file.file, content => callback(file, content)); + return readAsDataURL(file.file, (content) => callback(file, content)); } else { return callback(file, null); } @@ -80,7 +80,7 @@ function formatBytes(bytes, decimals) { 'MB', 'GB', 'TB', - 'PB' + 'PB', ]; const i = Math.floor(Math.log(bytes) / Math.log(k)); @@ -106,67 +106,64 @@ function sendFileMessage(file, roomId) { }); } -sendFileUpload = file => { - - return getUploadPreview(file, function(file, preview) { - let html = ''; - if (file.type === 'audio') { - html = `
`; - } else if (file.type === 'video') { - html = `
`; - } else if (file.type === 'image') { - html = `
`; - } else { - const fileSize = formatBytes(file.file.size); - html = `
${ Handlebars._escape(file.name) } - ${ fileSize }
`; +sendFileUpload = (file) => getUploadPreview(file, function(file, preview) { + let html = ''; + if (file.type === 'audio') { + html = `
`; + } else if (file.type === 'video') { + html = `
`; + } else if (file.type === 'image') { + html = `
`; + } else { + const fileSize = formatBytes(file.file.size); + html = `
${ Handlebars._escape(file.name) } - ${ fileSize }
`; + } + + swal({ + title: t('Upload_file_question'), + html, + showCancelButton: true, + cancelButtonText: t('No'), + confirmButtonText: t('Yes'), + }).then((result) => { + if (!result.value) { + return; } - swal({ - title: t('Upload_file_question'), - html, - showCancelButton: true, - cancelButtonText: t('No'), - confirmButtonText: t('Yes') - }).then((result) => { - if (!result.value) { - return; - } + const roomId = visitor.getRoom(true); - const roomId = visitor.getRoom(true); + if (visitor.getId()) { + return sendFileMessage(file.file, roomId); + } - if (visitor.getId()) { - return sendFileMessage(file.file, roomId); - } + const guest = { + token: visitor.getToken(), + }; - const guest = { - token: visitor.getToken() - }; + if (Livechat.department) { + guest.department = Livechat.department; + } - if (Livechat.department) { - guest.department = Livechat.department; + Meteor.call('livechat:registerGuest', guest, (error, result) => { + if (error) { + return showError(error.reason); } - Meteor.call('livechat:registerGuest', guest, (error, result) => { - if (error) { - return showError(error.reason); - } - - visitor.setId(result.userId); - sendFileMessage(file.file, roomId); - }); + visitor.setId(result.userId); + sendFileMessage(file.file, roomId); }); }); -} +}); -fileUpload = file => { +fileUpload = (file) => { if (file.size === 0) { swal({ title: t('FileUpload_File_Empty'), - text: reason, + text: '', type: 'error', timer: 1000, - showConfirmButton: false + showConfirmButton: false, }); return; diff --git a/packages/rocketchat-livechat/.app/client/lib/LivechatVideoCall.js b/packages/rocketchat-livechat/.app/client/lib/LivechatVideoCall.js index e31490bb45f..e22e7046950 100644 --- a/packages/rocketchat-livechat/.app/client/lib/LivechatVideoCall.js +++ b/packages/rocketchat-livechat/.app/client/lib/LivechatVideoCall.js @@ -48,11 +48,11 @@ LivechatVideoCall = new (class LivechatVideoCall { start(domain, room) { Meteor.defer(() => { const interfaceConfig = {}; - interfaceConfig['TOOLBAR_BUTTONS'] = '[""]'; - interfaceConfig['APP_NAME'] = '"Livechat"'; - interfaceConfig['INITIAL_TOOLBAR_TIMEOUT'] = '5000'; - interfaceConfig['MIN_WIDTH'] = '300'; - interfaceConfig['FILM_STRIP_MAX_HEIGHT'] = '50'; + interfaceConfig.TOOLBAR_BUTTONS = '[""]'; + interfaceConfig.APP_NAME = '"Livechat"'; + interfaceConfig.INITIAL_TOOLBAR_TIMEOUT = '5000'; + interfaceConfig.MIN_WIDTH = '300'; + interfaceConfig.FILM_STRIP_MAX_HEIGHT = '50'; this.api = new JitsiMeetExternalAPI(domain, room, $('.video-call').width(), $('.video-call').height(), $('.video-call .container').get(0), {}, interfaceConfig); diff --git a/packages/rocketchat-livechat/.app/client/lib/autolinker.js b/packages/rocketchat-livechat/.app/client/lib/autolinker.js index 9d4b8b29145..af580034dff 100644 --- a/packages/rocketchat-livechat/.app/client/lib/autolinker.js +++ b/packages/rocketchat-livechat/.app/client/lib/autolinker.js @@ -2,5 +2,5 @@ import Autolinker from 'autolinker'; this.livechatAutolinker = new Autolinker({ twitter: false, - phone: false + phone: false, }); diff --git a/packages/rocketchat-livechat/.app/client/lib/chatMessages.js b/packages/rocketchat-livechat/.app/client/lib/chatMessages.js index 054b2fbbcd2..65589f9ecd2 100644 --- a/packages/rocketchat-livechat/.app/client/lib/chatMessages.js +++ b/packages/rocketchat-livechat/.app/client/lib/chatMessages.js @@ -18,7 +18,7 @@ this.ChatMessages = class ChatMessages { resize() { const dif = 60 + $('.messages-container').find('footer').outerHeight(); return $('.messages-box').css({ - height: `calc(100% - ${ dif }px)` + height: `calc(100% - ${ dif }px)`, }); } @@ -108,7 +108,7 @@ this.ChatMessages = class ChatMessages { _id: Random.id(), rid, msg, - token: visitor.getToken() + token: visitor.getToken(), }; MsgTyping.stop(rid); @@ -117,7 +117,7 @@ this.ChatMessages = class ChatMessages { if (currentAgent) { agent = { agentId: currentAgent._id, - username: currentAgent.username + username: currentAgent.username, }; } @@ -142,7 +142,7 @@ this.ChatMessages = class ChatMessages { if (!visitor.getId()) { const guest = { - token: visitor.getToken() + token: visitor.getToken(), }; if (Livechat.department) { @@ -202,7 +202,7 @@ this.ChatMessages = class ChatMessages { $('.input-message').autogrow({ postGrowCallback: () => { this.resize(); - } + }, }); } } @@ -226,7 +226,7 @@ this.ChatMessages = class ChatMessages { 34, // Page Down 35, // Page Up 144, // Num Lock - 145 // Scroll Lock + 145, // Scroll Lock ]; for (i = 35; i <= 40; i++) { keyCodes.push(i); } // Home, End, Arrow Keys for (i = 112; i <= 123; i++) { keyCodes.push(i); } // F1 - F12 diff --git a/packages/rocketchat-livechat/.app/client/lib/commands.js b/packages/rocketchat-livechat/.app/client/lib/commands.js index 8d2af23652c..0d27c636b3a 100644 --- a/packages/rocketchat-livechat/.app/client/lib/commands.js +++ b/packages/rocketchat-livechat/.app/client/lib/commands.js @@ -28,7 +28,7 @@ this.Commands = { inputPlaceholder: t('Type_your_email'), showCancelButton: true, cancelButtonText: t('no'), - confirmButtonText: t('yes') + confirmButtonText: t('yes'), }).then((result) => { if ((typeof result.value === 'boolean') && !result.value) { return true; @@ -47,7 +47,7 @@ this.Commands = { title: t('transcript_sent'), type: 'success', timer: 1000, - showConfirmButton: false + showConfirmButton: false, }); }); }); @@ -56,5 +56,5 @@ this.Commands = { connected() { Livechat.connecting = false; - } + }, }; diff --git a/packages/rocketchat-livechat/.app/client/lib/error.js b/packages/rocketchat-livechat/.app/client/lib/error.js index 7fd5501fc2a..873b84462c6 100644 --- a/packages/rocketchat-livechat/.app/client/lib/error.js +++ b/packages/rocketchat-livechat/.app/client/lib/error.js @@ -1,3 +1,3 @@ -this.showError = msg => { +this.showError = (msg) => { $('.error').addClass('show').find('span').html(msg); }; diff --git a/packages/rocketchat-livechat/.app/client/lib/fromApp/Notifications.js b/packages/rocketchat-livechat/.app/client/lib/fromApp/Notifications.js index 8acbe3d5da1..362962b4bb8 100644 --- a/packages/rocketchat-livechat/.app/client/lib/fromApp/Notifications.js +++ b/packages/rocketchat-livechat/.app/client/lib/fromApp/Notifications.js @@ -1,12 +1,12 @@ import visitor from '../../../imports/client/visitor'; this.Notifications = new class { - constructor() { + constructor(...args) { this.logged = visitor.getId() !== null; this.loginCb = []; Tracker.autorun(() => { if (visitor.getId() !== null && this.logged === false) { - this.loginCb.forEach(cb => cb()); + this.loginCb.forEach((cb) => cb()); } return this.logged = visitor.getId() !== null; }); @@ -18,10 +18,10 @@ this.Notifications = new class { this.streamUser = new Meteor.Streamer('notify-user'); if (this.debug === true) { this.onAll(function() { - return console.log('RocketChat.Notifications: onAll', arguments); + return console.log('RocketChat.Notifications: onAll', args); }); this.onUser(function() { - return console.log('RocketChat.Notifications: onAll', arguments); + return console.log('RocketChat.Notifications: onAll', args); }); } } @@ -34,14 +34,14 @@ this.Notifications = new class { } notifyRoom(room, eventName, ...args) { if (this.debug === true) { - console.log('RocketChat.Notifications: notifyRoom', arguments); + console.log('RocketChat.Notifications: notifyRoom', room, eventName, ...args); } args.unshift(`${ room }/${ eventName }`); return this.streamRoom.emit.apply(this.streamRoom, args); } notifyUser(userId, eventName, ...args) { if (this.debug === true) { - console.log('RocketChat.Notifications: notifyUser', arguments); + console.log('RocketChat.Notifications: notifyUser', userId, eventName, ...args); } args.unshift(`${ userId }/${ eventName }`); return this.streamUser.emit.apply(this.streamUser, args); @@ -50,14 +50,12 @@ this.Notifications = new class { return this.streamAll.on(eventName, { token: visitor.getToken() }, callback); } onLogged(eventName, callback) { - return this.onLogin(() => { - return this.streamLogged.on(eventName, { token: visitor.getToken() }, callback); - }); + return this.onLogin(() => this.streamLogged.on(eventName, { token: visitor.getToken() }, callback)); } onRoom(room, eventName, callback) { if (this.debug === true) { this.streamRoom.on(room, { token: visitor.getToken() }, function() { - return console.log(`RocketChat.Notifications: onRoom ${ room }`, arguments); + return console.log(`RocketChat.Notifications: onRoom ${ room }`, room, eventName, callback); }); } return this.streamRoom.on(`${ room }/${ eventName }`, { token: visitor.getToken() }, callback); diff --git a/packages/rocketchat-livechat/.app/client/lib/fromApp/RoomHistoryManager.js b/packages/rocketchat-livechat/.app/client/lib/fromApp/RoomHistoryManager.js index 2d6ab8f9244..085e4b7d8eb 100644 --- a/packages/rocketchat-livechat/.app/client/lib/fromApp/RoomHistoryManager.js +++ b/packages/rocketchat-livechat/.app/client/lib/fromApp/RoomHistoryManager.js @@ -16,7 +16,7 @@ export const RoomHistoryManager = new class { isLoading: new ReactiveVar(false), unreadNotLoaded: new ReactiveVar(0), firstUnread: new ReactiveVar, - loaded: undefined + loaded: undefined, }; } @@ -32,9 +32,9 @@ export const RoomHistoryManager = new class { room.isLoading.set(true); - //$('.messages-box .wrapper').data('previous-height', $('.messages-box .wrapper').get(0)?.scrollHeight - $('.messages-box .wrapper').get(0)?.scrollTop) + // $('.messages-box .wrapper').data('previous-height', $('.messages-box .wrapper').get(0)?.scrollHeight - $('.messages-box .wrapper').get(0)?.scrollTop) // ScrollListener.setLoader true - const lastMessage = ChatMessage.findOne({rid}, { fields: { ts: 1 }, sort: { ts: 1 }}); + const lastMessage = ChatMessage.findOne({ rid }, { fields: { ts: 1 }, sort: { ts: 1 } }); // lastMessage ?= ChatMessage.findOne({rid: rid}, {sort: {ts: 1}}) let ts; @@ -52,7 +52,7 @@ export const RoomHistoryManager = new class { if (result && result.messages) { result.messages.forEach((item) => { if (item.t !== 'command') { - ChatMessage.upsert({_id: item._id}, item); + ChatMessage.upsert({ _id: item._id }, item); } }); room.isLoading.set(false); @@ -76,16 +76,16 @@ export const RoomHistoryManager = new class { room.isLoading.set(true); - const lastMessage = ChatMessage.findOne({rid}, {sort: {ts: -1}}); + const lastMessage = ChatMessage.findOne({ rid }, { sort: { ts: -1 } }); let typeName = undefined; - const subscription = ChatSubscription.findOne({rid}); + const subscription = ChatSubscription.findOne({ rid }); if (subscription != null) { // const { ls } = subscription; typeName = subscription.t + subscription.name; } else { - const curRoomDoc = ChatRoom.findOne({_id: rid}); + const curRoomDoc = ChatRoom.findOne({ _id: rid }); typeName = (curRoomDoc != null ? curRoomDoc.t : undefined) + (curRoomDoc != null ? curRoomDoc.name : undefined); } @@ -96,11 +96,11 @@ export const RoomHistoryManager = new class { for (const item of Array.from((result != null ? result.messages : undefined) || [])) { if (item.t !== 'command') { const roles = [ - (item.u && item.u._id && UserRoles.findOne(item.u._id, { fields: { roles: 1 }})) || {}, - (item.u && item.u._id && RoomRoles.findOne({rid: item.rid, 'u._id': item.u._id})) || {} - ].map(e => e.roles); + (item.u && item.u._id && UserRoles.findOne(item.u._id, { fields: { roles: 1 } })) || {}, + (item.u && item.u._id && RoomRoles.findOne({ rid: item.rid, 'u._id': item.u._id })) || {}, + ].map((e) => e.roles); item.roles = _.union.apply(_.union, roles); - ChatMessage.upsert({_id: item._id}, item); + ChatMessage.upsert({ _id: item._id }, item); } } @@ -128,9 +128,9 @@ export const RoomHistoryManager = new class { if (ChatMessage.findOne(message._id)) { const wrapper = $('.messages-box .wrapper'); const msgElement = $(`#${ message._id }`, wrapper); - const pos = (wrapper.scrollTop() + msgElement.offset().top) - (wrapper.height()/2); + const pos = (wrapper.scrollTop() + msgElement.offset().top) - (wrapper.height() / 2); wrapper.animate({ - scrollTop: pos + scrollTop: pos, }, 500); msgElement.addClass('highlight'); @@ -147,12 +147,12 @@ export const RoomHistoryManager = new class { let typeName = undefined; - const subscription = ChatSubscription.findOne({rid: message.rid}); + const subscription = ChatSubscription.findOne({ rid: message.rid }); if (subscription) { // const { ls } = subscription; typeName = subscription.t + subscription.name; } else { - const curRoomDoc = ChatRoom.findOne({_id: message.rid}); + const curRoomDoc = ChatRoom.findOne({ _id: message.rid }); typeName = (curRoomDoc != null ? curRoomDoc.t : undefined) + (curRoomDoc != null ? curRoomDoc.name : undefined); } @@ -160,11 +160,11 @@ export const RoomHistoryManager = new class { for (const item of Array.from((result != null ? result.messages : undefined) || [])) { if (item.t !== 'command') { const roles = [ - (item.u && item.u._id && UserRoles.findOne(item.u._id, { fields: { roles: 1 }})) || {}, - (item.u && item.u._id && RoomRoles.findOne({rid: item.rid, 'u._id': item.u._id})) || {} - ].map(e => e.roles); + (item.u && item.u._id && UserRoles.findOne(item.u._id, { fields: { roles: 1 } })) || {}, + (item.u && item.u._id && RoomRoles.findOne({ rid: item.rid, 'u._id': item.u._id })) || {}, + ].map((e) => e.roles); item.roles = _.union.apply(_.union, roles); - ChatMessage.upsert({_id: item._id}, item); + ChatMessage.upsert({ _id: item._id }, item); } } @@ -173,9 +173,9 @@ export const RoomHistoryManager = new class { RoomManager.updateMentionsMarksOfRoom(typeName); const wrapper = $('.messages-box .wrapper'); const msgElement = $(`#${ message._id }`, wrapper); - const pos = (wrapper.scrollTop() + msgElement.offset().top) - (wrapper.height()/2); + const pos = (wrapper.scrollTop() + msgElement.offset().top) - (wrapper.height() / 2); wrapper.animate({ - scrollTop: pos + scrollTop: pos, }, 500); msgElement.addClass('highlight'); diff --git a/packages/rocketchat-livechat/.app/client/lib/fromApp/avatar.js b/packages/rocketchat-livechat/.app/client/lib/fromApp/avatar.js index 07aad70c42c..553e602278b 100644 --- a/packages/rocketchat-livechat/.app/client/lib/fromApp/avatar.js +++ b/packages/rocketchat-livechat/.app/client/lib/fromApp/avatar.js @@ -1,4 +1,4 @@ -this.getAvatarUrlFromUsername = username => { +this.getAvatarUrlFromUsername = (username) => { const key = `avatar_random_${ username }`; const random = Session.keys[key] || 0; if (!username) { @@ -8,7 +8,7 @@ this.getAvatarUrlFromUsername = username => { return `${ Meteor.absoluteUrl() }avatar/${ username }.jpg?_dc=${ random }`; }; -this.updateAvatarOfUsername = username => { +this.updateAvatarOfUsername = (username) => { const key = `avatar_random_${ username }`; Session.set(key, Math.round(Math.random() * 1000)); diff --git a/packages/rocketchat-livechat/.app/client/lib/hooks.js b/packages/rocketchat-livechat/.app/client/lib/hooks.js index 93ba1a6f11c..ec46d2dfbfc 100644 --- a/packages/rocketchat-livechat/.app/client/lib/hooks.js +++ b/packages/rocketchat-livechat/.app/client/lib/hooks.js @@ -65,7 +65,7 @@ const api = { visitor.setToken(result.visitor.token); } }); - } + }, }; window.addEventListener('message', function(msg) { diff --git a/packages/rocketchat-livechat/.app/client/lib/msgTyping.js b/packages/rocketchat-livechat/.app/client/lib/msgTyping.js index 3dbc0ca5001..ed549cc9bde 100644 --- a/packages/rocketchat-livechat/.app/client/lib/msgTyping.js +++ b/packages/rocketchat-livechat/.app/client/lib/msgTyping.js @@ -17,7 +17,7 @@ export const MsgTyping = (function() { return; } usersTyping[room] = { users: {} }; - return Notifications.onRoom(room, 'typing', function(username, typing, extraData) { + return Notifications.onRoom(room, 'typing', function(username, typing/* , extraData*/) { const user = Meteor.user(); if (username === (user && user.username)) { return; diff --git a/packages/rocketchat-livechat/.app/client/lib/parentCall.js b/packages/rocketchat-livechat/.app/client/lib/parentCall.js index ae705ec7618..23a31167b85 100644 --- a/packages/rocketchat-livechat/.app/client/lib/parentCall.js +++ b/packages/rocketchat-livechat/.app/client/lib/parentCall.js @@ -2,7 +2,7 @@ this.parentCall = (method, args = []) => { const data = { src: 'rocketchat', fn: method, - args + args, }; window.parent.postMessage(data, '*'); diff --git a/packages/rocketchat-livechat/.app/client/lib/tapi18n.js b/packages/rocketchat-livechat/.app/client/lib/tapi18n.js index c1ded6b8605..18216eb2395 100644 --- a/packages/rocketchat-livechat/.app/client/lib/tapi18n.js +++ b/packages/rocketchat-livechat/.app/client/lib/tapi18n.js @@ -6,7 +6,7 @@ this.t = function(key, ...replaces) { } else { return TAPi18n.__(key, { postProcess: 'sprintf', - sprintf: replaces + sprintf: replaces, }); } }; @@ -17,12 +17,12 @@ this.tr = function(key, options, ...replaces) { } else { return TAPi18n.__(key, options, { postProcess: 'sprintf', - sprintf: replaces + sprintf: replaces, }); } }; this.isRtl = (lang) => { - const language = lang ? lang : localStorage.getItem('userLanguage') ? localStorage.getItem('userLanguage') : 'en-US'; + const language = lang || localStorage.getItem('userLanguage') || 'en-US'; return ['ar', 'dv', 'fa', 'he', 'ku', 'ps', 'sd', 'ug', 'ur', 'yi'].includes(language.split('-').shift().toLowerCase()); }; diff --git a/packages/rocketchat-livechat/.app/client/lib/triggers.js b/packages/rocketchat-livechat/.app/client/lib/triggers.js index 3f958c47b97..841191a5c43 100644 --- a/packages/rocketchat-livechat/.app/client/lib/triggers.js +++ b/packages/rocketchat-livechat/.app/client/lib/triggers.js @@ -17,21 +17,21 @@ function getAgent(triggerAction) { Meteor.call('livechat:getNextAgent', { token: visitor.getToken(), - department: Livechat.department + department: Livechat.department, }, (error, result) => { if (error) { return reject(error); } localStorage.setItem('triggerAgent', JSON.stringify({ agent: result, - ts: Date.now() + ts: Date.now(), })); resolve(result); }); } else if (params.sender === 'custom') { resolve({ - username: params.name + username: params.name, }); } else { reject('Unknown sender'); @@ -66,7 +66,7 @@ this.Triggers = (function() { ChatMessage.insert({ msg: action.params.msg, rid: roomId, - u: agent + u: agent, }); if (agent._id) { @@ -137,6 +137,6 @@ this.Triggers = (function() { processRequest, setTriggers, setDisabled, - setEnabled + setEnabled, }; }()); diff --git a/packages/rocketchat-livechat/.app/client/methods/sendMessageExternal.js b/packages/rocketchat-livechat/.app/client/methods/sendMessageExternal.js index 8a2bdaebf2a..8e67ccd678f 100644 --- a/packages/rocketchat-livechat/.app/client/methods/sendMessageExternal.js +++ b/packages/rocketchat-livechat/.app/client/methods/sendMessageExternal.js @@ -14,7 +14,7 @@ Meteor.methods({ message.u = { _id: visitor.getId(), - username: user && user.username || 'visitor' + username: (user && user.username) || 'visitor', }; message.temp = true; @@ -23,5 +23,5 @@ Meteor.methods({ ChatMessage.insert(message); } - } + }, }); diff --git a/packages/rocketchat-livechat/.app/client/routes/router.js b/packages/rocketchat-livechat/.app/client/routes/router.js index 9b6e69af295..a18955493f4 100644 --- a/packages/rocketchat-livechat/.app/client/routes/router.js +++ b/packages/rocketchat-livechat/.app/client/routes/router.js @@ -5,9 +5,9 @@ BlazeLayout.setRoot('body'); FlowRouter.route('/livechat', { name: 'index', triggersEnter: [ - () => visitor.register() + () => visitor.register(), ], action() { BlazeLayout.render('main', { center: 'livechatWindow' }); - } + }, }); diff --git a/packages/rocketchat-livechat/.app/client/startup/visitor.js b/packages/rocketchat-livechat/.app/client/startup/visitor.js index c073f9a225d..0917815e7a6 100644 --- a/packages/rocketchat-livechat/.app/client/startup/visitor.js +++ b/packages/rocketchat-livechat/.app/client/startup/visitor.js @@ -4,7 +4,7 @@ Meteor.startup(() => { if (!localStorage.getItem('rocketChatLivechat')) { localStorage.setItem('rocketChatLivechat', Random.id()); } else { - Tracker.autorun(c => { + Tracker.autorun((c) => { if (!visitor.getId() && visitor.getToken()) { Meteor.call('livechat:loginByToken', visitor.getToken(), (err, result) => { if (result && result._id) { @@ -20,12 +20,12 @@ Meteor.startup(() => { Meteor.startup(() => { let connected = false; Tracker.autorun(function() { - var connectionStatus = Meteor.status(); + const connectionStatus = Meteor.status(); if (visitor.getRoom() && visitor.getToken() && connectionStatus.connected && !connected) { connected = connectionStatus.connected; document.cookie = `rc_rid=${ visitor.getRoom() }; path=/`; document.cookie = `rc_token=${ visitor.getToken() }; path=/`; - document.cookie = `rc_room_type=l; path=/`; + document.cookie = 'rc_room_type=l; path=/'; visitor.setConnected(); } }); diff --git a/packages/rocketchat-livechat/.app/client/views/avatar.js b/packages/rocketchat-livechat/.app/client/views/avatar.js index 62443cf4991..c2500afbdc0 100644 --- a/packages/rocketchat-livechat/.app/client/views/avatar.js +++ b/packages/rocketchat-livechat/.app/client/views/avatar.js @@ -2,9 +2,9 @@ import visitor from '../../imports/client/visitor'; Template.avatar.helpers({ imageUrl() { - let username = this.username; + let { username } = this; if (!username && this.userId) { - const user = Meteor.users.findOne(this.userId, { fields: { username: 1 }}); + const user = Meteor.users.findOne(this.userId, { fields: { username: 1 } }); username = user && user.username; } @@ -16,5 +16,5 @@ Template.avatar.helpers({ Session.get(`avatar_random_${ username }`); return `background-image:url(${ getAvatarUrlFromUsername(username) });`; - } + }, }); diff --git a/packages/rocketchat-livechat/.app/client/views/livechatWindow.js b/packages/rocketchat-livechat/.app/client/views/livechatWindow.js index dc1bfcc4297..a79c6a65533 100644 --- a/packages/rocketchat-livechat/.app/client/views/livechatWindow.js +++ b/packages/rocketchat-livechat/.app/client/views/livechatWindow.js @@ -3,7 +3,7 @@ import visitor from '../../imports/client/visitor'; function showDepartments() { return Department.find({ showOnRegistration: true }).count() > 1; -}; +} Template.livechatWindow.helpers({ title() { @@ -44,7 +44,7 @@ Template.livechatWindow.helpers({ offlineMessage: Livechat.offlineMessage.replace(/([^>\r\n]?)(\r\n|\n\r|\r|\n)/g, '$1
$2'), offlineSuccessMessage: Livechat.offlineSuccessMessage, offlineUnavailableMessage: Livechat.offlineUnavailableMessage.replace(/([^>\r\n]?)(\r\n|\n\r|\r|\n)/g, '$1
$2'), - displayOfflineForm: Livechat.displayOfflineForm + displayOfflineForm: Livechat.displayOfflineForm, }; }, videoCalling() { @@ -55,7 +55,7 @@ Template.livechatWindow.helpers({ }, showWidget() { return Livechat.online || Livechat.displayOfflineForm; - } + }, }); Template.livechatWindow.events({ @@ -68,12 +68,12 @@ Template.livechatWindow.events({ }, 'click .sound'(event) { event.stopPropagation(); - Session.set({sound: !Session.get('sound')}); - } + Session.set({ sound: !Session.get('sound') }); + }, }); Template.livechatWindow.onCreated(function() { - Session.set({sound: true}); + Session.set({ sound: true }); TAPi18n.conf.i18n_files_route = Meteor._relativeToSiteRootUrl('/tap-i18n'); @@ -90,7 +90,7 @@ Template.livechatWindow.onCreated(function() { return lng; }; - const loadDepartments = departments => { + const loadDepartments = (departments) => { Department.remove({}); departments.forEach((department) => { Department.insert(department); diff --git a/packages/rocketchat-livechat/.app/client/views/message.js b/packages/rocketchat-livechat/.app/client/views/message.js index dac45da7a1f..b10a98ff15b 100644 --- a/packages/rocketchat-livechat/.app/client/views/message.js +++ b/packages/rocketchat-livechat/.app/client/views/message.js @@ -61,12 +61,12 @@ Template.message.helpers({ }, sender() { - const agent = Livechat.agent; + const { agent } = Livechat; if (agent && this.u.username === agent.username) { return agent.name || agent.username; } return this.u.username; - } + }, }); Template.message.onViewRendered = function(context) { @@ -96,7 +96,7 @@ Template.message.onViewRendered = function(context) { } if (context.urls && context.urls.length > 0 && Template.oembedBaseWidget) { - context.urls.forEach(item => { + context.urls.forEach((item) => { const urlNode = lastNode.querySelector(`.body a[href="${ item.url }"]`); if (urlNode) { $(urlNode).replaceWith(Blaze.toHTMLWithData(Template.oembedBaseWidget, item)); diff --git a/packages/rocketchat-livechat/.app/client/views/messageAttachment.js b/packages/rocketchat-livechat/.app/client/views/messageAttachment.js index abba74128bb..1a26665917d 100644 --- a/packages/rocketchat-livechat/.app/client/views/messageAttachment.js +++ b/packages/rocketchat-livechat/.app/client/views/messageAttachment.js @@ -3,4 +3,4 @@ Template.messageAttachment.helpers({ getImageHeight(height = 200) { return height; }, -}); \ No newline at end of file +}); diff --git a/packages/rocketchat-livechat/.app/client/views/messages.js b/packages/rocketchat-livechat/.app/client/views/messages.js index 0c3772ae7ff..505d5013028 100644 --- a/packages/rocketchat-livechat/.app/client/views/messages.js +++ b/packages/rocketchat-livechat/.app/client/views/messages.js @@ -1,4 +1,4 @@ -/* globals Livechat, LivechatVideoCall, MsgTyping */ +/* globals Livechat, LivechatVideoCall, MsgTyping, fileUpload */ import visitor from '../../imports/client/visitor'; import _ from 'underscore'; import mime from 'mime-type/with-db'; @@ -8,12 +8,12 @@ Template.messages.helpers({ return ChatMessage.find({ rid: visitor.getRoom(), t: { - '$nin': ['t', 'livechat_navigation_history'] - } + $nin: ['t', 'livechat_navigation_history'], + }, }, { sort: { - ts: 1 - } + ts: 1, + }, }); }, showOptions() { @@ -48,7 +48,7 @@ Template.messages.helpers({ return { multi: false, selfTyping: MsgTyping.selfTyping.get(), - users: users[0] + users: users[0], }; } // usernames = _.map messages, (message) -> return message.u.username @@ -62,17 +62,17 @@ Template.messages.helpers({ return { multi: true, selfTyping: MsgTyping.selfTyping.get(), - users: usernames.join(` ${ t('and') } `) + users: usernames.join(` ${ t('and') } `), }; }, agentData() { - const agent = Livechat.agent; + const { agent } = Livechat.agent; if (!agent) { return null; } const agentData = { - avatar: getAvatarUrlFromUsername(agent.username) + avatar: getAvatarUrlFromUsername(agent.username), }; if (agent.name) { @@ -90,14 +90,14 @@ Template.messages.helpers({ } return agentData; - } + }, }); Template.messages.events({ 'keyup .input-message'(event, instance) { instance.chatMessages.keyup(visitor.getRoom(), event, instance); instance.updateMessageInputHeight(event.currentTarget); - instance.isMessageFieldEmpty.set(event.target.value == ''); + instance.isMessageFieldEmpty.set(event.target.value === ''); }, 'keydown .input-message'(event, instance) { return instance.chatMessages.keydown(visitor.getRoom(), event, instance); @@ -107,7 +107,7 @@ Template.messages.events({ const sent = instance.chatMessages.send(visitor.getRoom(), input); input.focus(); instance.updateMessageInputHeight(input); - instance.isMessageFieldEmpty.set(input.value == ''); + instance.isMessageFieldEmpty.set(input.value === ''); return sent; }, @@ -144,29 +144,29 @@ Template.messages.events({ $input.css('display', 'none'); $input.attr({ id: 'fileupload-input', - type: 'file' + type: 'file', }); $(document.body).append($input); - + $input.one('change', function(e) { - const files = e.target.files; - if (files && ( files.length > 0 )) { + const { files } = e.target; + if (files && (files.length > 0)) { const file = files[0]; Object.defineProperty(file, 'type', { - value: mime.lookup(file.name) + value: mime.lookup(file.name), }); fileUpload({ file, - name: file.name + name: file.name, }); } $input.remove(); }); - - $input.click(); - } + + $input.click(); + }, }); Template.messages.onCreated(function() { @@ -182,11 +182,12 @@ Template.messages.onCreated(function() { // If there is no text, reset the height. const inputScrollHeight = $(input).prop('scrollHeight'); if (inputScrollHeight > 28) { - return $(input).height($(input).val() === '' ? '15px' : (inputScrollHeight >= 200 ? inputScrollHeight - 50 : inputScrollHeight - 20)); + const scrollHeight = inputScrollHeight >= 200 ? inputScrollHeight - 50 : inputScrollHeight - 20; + return $(input).height($(input).val() === '' ? '15px' : scrollHeight); } }; - $(document).click((/*event*/) => { + $(document).click((/* event*/) => { if (!this.showOptions.get()) { return; } diff --git a/packages/rocketchat-livechat/.app/client/views/offlineForm.js b/packages/rocketchat-livechat/.app/client/views/offlineForm.js index 1914355cb02..10a1da0d363 100644 --- a/packages/rocketchat-livechat/.app/client/views/offlineForm.js +++ b/packages/rocketchat-livechat/.app/client/views/offlineForm.js @@ -17,7 +17,7 @@ Template.offlineForm.helpers({ } else { return TAPi18n.__('Thanks_We_ll_get_back_to_you_soon'); } - } + }, }); Template.offlineForm.events({ @@ -27,9 +27,9 @@ Template.offlineForm.events({ const form = event.currentTarget; const data = { - name: form.elements['name'].value, - email: form.elements['email'].value, - message: form.elements['message'].value + name: form.elements.name.value, + email: form.elements.email.value, + message: form.elements.message.value, }; if (!instance.validateForm(form)) { @@ -49,7 +49,7 @@ Template.offlineForm.events({ parentCall('callback', ['offline-form-submit', data]); } }); - } + }, }); Template.offlineForm.onCreated(function() { diff --git a/packages/rocketchat-livechat/.app/client/views/options.js b/packages/rocketchat-livechat/.app/client/views/options.js index c6a76d56af2..95c892697ea 100644 --- a/packages/rocketchat-livechat/.app/client/views/options.js +++ b/packages/rocketchat-livechat/.app/client/views/options.js @@ -11,7 +11,7 @@ Template.options.helpers({ }, selectedDepartment() { return this._id === Livechat.department; - } + }, }); Template.options.events({ @@ -24,7 +24,7 @@ Template.options.events({ confirmButtonColor: '#DD6B55', confirmButtonText: t('Yes'), cancelButtonText: t('No'), - html: false + html: false, }).then((result) => { if (result.value) { Meteor.call('livechat:closeByVisitor', { roomId: visitor.getRoom(), token: visitor.getToken() }, (error) => { @@ -37,5 +37,5 @@ Template.options.events({ }, 'click .switch-department'() { Livechat.showSwitchDepartmentForm = true; - } + }, }); diff --git a/packages/rocketchat-livechat/.app/client/views/register.js b/packages/rocketchat-livechat/.app/client/views/register.js index 4139fb1c5c6..faca0b5f0cc 100644 --- a/packages/rocketchat-livechat/.app/client/views/register.js +++ b/packages/rocketchat-livechat/.app/client/views/register.js @@ -33,7 +33,7 @@ Template.register.helpers({ }, getEmail() { return Livechat.guestEmail; - } + }, }); Template.register.events({ @@ -77,7 +77,7 @@ Template.register.events({ token: visitor.getToken(), name, email, - department: Livechat.department || departmentId + department: Livechat.department || departmentId, }; Meteor.call('livechat:registerGuest', guest, function(error, result) { if (error != null) { @@ -98,7 +98,7 @@ Template.register.events({ }, 'click .request-video'(e, instance) { instance.request = 'video'; - } + }, }); Template.register.onCreated(function() { @@ -106,9 +106,7 @@ Template.register.onCreated(function() { this.request = ''; this.validateForm = (form, fields) => { - const valid = fields.every((field) => { - return !_.isEmpty(s.trim(form.elements[field].value)); - }); + const valid = fields.every((field) => !_.isEmpty(s.trim(form.elements[field].value))); return valid; }; diff --git a/packages/rocketchat-livechat/.app/client/views/survey.js b/packages/rocketchat-livechat/.app/client/views/survey.js index cf86c5418df..b70ef65ad9c 100644 --- a/packages/rocketchat-livechat/.app/client/views/survey.js +++ b/packages/rocketchat-livechat/.app/client/views/survey.js @@ -9,13 +9,13 @@ Template.survey.events({ 'click button.send'(e, instance) { const formData = instance.$('form').serializeArray(); - Meteor.call('livechat:saveSurveyFeedback', visitor.getToken(), visitor.getRoom(), formData, function(/*err, results*/) { + Meteor.call('livechat:saveSurveyFeedback', visitor.getToken(), visitor.getRoom(), formData, function(/* err, results*/) { instance.$('#survey').remove(); swal({ title: t('Thank_you_for_your_feedback'), type: 'success', - timer: 2000 + timer: 2000, }); }); - } + }, }); diff --git a/packages/rocketchat-livechat/.app/client/views/switchDepartment.js b/packages/rocketchat-livechat/.app/client/views/switchDepartment.js index d2a4aca88c2..b7486c57ef8 100644 --- a/packages/rocketchat-livechat/.app/client/views/switchDepartment.js +++ b/packages/rocketchat-livechat/.app/client/views/switchDepartment.js @@ -7,8 +7,8 @@ Template.switchDepartment.helpers({ return Department.find({ showOnRegistration: true, _id: { - $ne: Livechat.department - } + $ne: Livechat.department, + }, }); }, error() { @@ -16,7 +16,7 @@ Template.switchDepartment.helpers({ }, showError() { return Template.instance().error.get() ? 'show' : ''; - } + }, }); Template.switchDepartment.onCreated(function() { @@ -43,11 +43,11 @@ Template.switchDepartment.events({ confirmButtonColor: '#DD6B55', confirmButtonText: t('Yes'), cancelButtonText: t('No'), - html: false + html: false, }).then((result) => { if (!result.value) { return; - } + } Meteor.call('livechat:closeByVisitor', { roomId: visitor.getRoom(), token: visitor.getToken() }, (error) => { if (error) { @@ -56,7 +56,7 @@ Template.switchDepartment.events({ const guestData = { token: visitor.getToken(), - department: departmentId + department: departmentId, }; Meteor.call('livechat:setDepartmentForVisitor', guestData, (error) => { if (error) { @@ -67,7 +67,7 @@ Template.switchDepartment.events({ swal({ title: t('Department_switched'), type: 'success', - timer: 2000 + timer: 2000, }); }); }); @@ -76,5 +76,5 @@ Template.switchDepartment.events({ 'click #btnCancel'() { Livechat.showSwitchDepartmentForm = false; - } + }, }); diff --git a/packages/rocketchat-livechat/.app/client/views/videoCall.js b/packages/rocketchat-livechat/.app/client/views/videoCall.js index 5e44800ea4f..d0e6231feba 100644 --- a/packages/rocketchat-livechat/.app/client/views/videoCall.js +++ b/packages/rocketchat-livechat/.app/client/views/videoCall.js @@ -5,7 +5,7 @@ Template.videoCall.helpers({ if (Template.instance().showToolbar.get()) { return 'visible'; } - } + }, }); Template.videoCall.events({ @@ -23,7 +23,7 @@ Template.videoCall.events({ instance.showToolbar.set(false); }, 3000); } - } + }, }); Template.videoCall.onCreated(function() { diff --git a/packages/rocketchat-livechat/.app/imports/client/visitor.js b/packages/rocketchat-livechat/.app/imports/client/visitor.js index 641c23589a0..51cfd5d6c15 100644 --- a/packages/rocketchat-livechat/.app/imports/client/visitor.js +++ b/packages/rocketchat-livechat/.app/imports/client/visitor.js @@ -1,4 +1,4 @@ -/* globals Commands, Livechat */ +/* globals Commands, Livechat, UserPresence */ const msgStream = new Meteor.Streamer('room-messages'); export default { @@ -56,7 +56,7 @@ export default { }, setToken(token) { - if (!token || token == this.token.get()) { + if (!token || token === this.token.get()) { return; } @@ -87,7 +87,7 @@ export default { const data = { token: this.getToken(), - name + name, }; Meteor.call('livechat:registerGuest', data); @@ -102,7 +102,7 @@ export default { const data = { token: this.getToken(), - email + email, }; Meteor.call('livechat:registerGuest', data); @@ -166,5 +166,5 @@ export default { UserPresence.awayTime = 300000; // 5 minutes UserPresence.start(token); }); - } + }, }; diff --git a/packages/rocketchat-livechat/.app/package-lock.json b/packages/rocketchat-livechat/.app/package-lock.json new file mode 100644 index 00000000000..bbfd1e1275a --- /dev/null +++ b/packages/rocketchat-livechat/.app/package-lock.json @@ -0,0 +1,1338 @@ +{ + "name": "rocketchat-livechat", + "version": "1.0.0", + "lockfileVersion": 1, + "requires": true, + "dependencies": { + "@babel/runtime": { + "version": "7.0.0-beta.52", + "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.0.0-beta.52.tgz", + "integrity": "sha1-PztCuCuStOGig/x43xuy/Uuo0Mc=", + "requires": { + "core-js": "2.5.7", + "regenerator-runtime": "0.12.0" + } + }, + "autolinker": { + "version": "1.6.2", + "resolved": "https://registry.npmjs.org/autolinker/-/autolinker-1.6.2.tgz", + "integrity": "sha512-IKLGtYFb3jzGTtgCpb4bm//1sXmmmgmr0msKshhYoc7EsWmLCFvuyxLcEIfcZ5gbCgZGXrnXkOkcBblOFEnlog==" + }, + "balanced-match": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.0.tgz", + "integrity": "sha1-ibTRmasr7kneFk6gK4nORi1xt2c=" + }, + "bcrypt": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/bcrypt/-/bcrypt-2.0.1.tgz", + "integrity": "sha512-DwB7WgJPdskbR+9Y3OTJtwRq09Lmm7Na6b+4ewvXjkD0nfNRi1OozxljHm5ETlDCBq9DTy04lQz+rj+T2ztIJg==", + "requires": { + "nan": "2.10.0", + "node-pre-gyp": "0.9.1" + }, + "dependencies": { + "abbrev": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/abbrev/-/abbrev-1.1.1.tgz", + "integrity": "sha512-nne9/IiQ/hzIhY6pdDnbBtz7DjPTKrY00P/zvPSm5pOFkl6xuGrGnXn/VtTNNfNtAfZ9/1RtehkszU9qcTii0Q==" + }, + "ansi-regex": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", + "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=" + }, + "aproba": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/aproba/-/aproba-1.2.0.tgz", + "integrity": "sha512-Y9J6ZjXtoYh8RnXVCMOU/ttDmk1aBjunq9vO0ta5x85WDQiQfUF9sIPBITdbiiIVcBo03Hi3jMxigBtsddlXRw==" + }, + "are-we-there-yet": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/are-we-there-yet/-/are-we-there-yet-1.1.4.tgz", + "integrity": "sha1-u13KOCu5TwXhUZQ3PRb9O6HKEQ0=", + "requires": { + "delegates": "1.0.0", + "readable-stream": "2.3.5" + } + }, + "balanced-match": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.0.tgz", + "integrity": "sha1-ibTRmasr7kneFk6gK4nORi1xt2c=" + }, + "brace-expansion": { + "version": "1.1.11", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", + "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", + "requires": { + "balanced-match": "1.0.0", + "concat-map": "0.0.1" + } + }, + "chownr": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/chownr/-/chownr-1.0.1.tgz", + "integrity": "sha1-4qdQQqlVGQi+vSW4Uj1fl2nXkYE=" + }, + "code-point-at": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/code-point-at/-/code-point-at-1.1.0.tgz", + "integrity": "sha1-DQcLTQQ6W+ozovGkDi7bPZpMz3c=" + }, + "concat-map": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", + "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=" + }, + "console-control-strings": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/console-control-strings/-/console-control-strings-1.1.0.tgz", + "integrity": "sha1-PXz0Rk22RG6mRL9LOVB/mFEAjo4=" + }, + "core-util-is": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz", + "integrity": "sha1-tf1UIgqivFq1eqtxQMlAdUUDwac=" + }, + "debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "requires": { + "ms": "2.0.0" + } + }, + "deep-extend": { + "version": "0.4.2", + "resolved": "https://registry.npmjs.org/deep-extend/-/deep-extend-0.4.2.tgz", + "integrity": "sha1-SLaZwn4zS/ifEIkr5DL25MfTSn8=" + }, + "delegates": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/delegates/-/delegates-1.0.0.tgz", + "integrity": "sha1-hMbhWbgZBP3KWaDvRM2HDTElD5o=" + }, + "detect-libc": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/detect-libc/-/detect-libc-1.0.3.tgz", + "integrity": "sha1-+hN8S9aY7fVc1c0CrFWfkaTEups=" + }, + "fs-minipass": { + "version": "1.2.5", + "resolved": "https://registry.npmjs.org/fs-minipass/-/fs-minipass-1.2.5.tgz", + "integrity": "sha512-JhBl0skXjUPCFH7x6x61gQxrKyXsxB5gcgePLZCwfyCGGsTISMoIeObbrvVeP6Xmyaudw4TT43qV2Gz+iyd2oQ==", + "requires": { + "minipass": "2.2.4" + } + }, + "fs.realpath": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", + "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=" + }, + "gauge": { + "version": "2.7.4", + "resolved": "https://registry.npmjs.org/gauge/-/gauge-2.7.4.tgz", + "integrity": "sha1-LANAXHU4w51+s3sxcCLjJfsBi/c=", + "requires": { + "aproba": "1.2.0", + "console-control-strings": "1.1.0", + "has-unicode": "2.0.1", + "object-assign": "4.1.1", + "signal-exit": "3.0.2", + "string-width": "1.0.2", + "strip-ansi": "3.0.1", + "wide-align": "1.1.2" + } + }, + "glob": { + "version": "7.1.2", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.2.tgz", + "integrity": "sha512-MJTUg1kjuLeQCJ+ccE4Vpa6kKVXkPYJ2mOCQyUuKLcLQsdrMCpBPUi8qVE6+YuaJkozeA9NusTAw3hLr8Xe5EQ==", + "requires": { + "fs.realpath": "1.0.0", + "inflight": "1.0.6", + "inherits": "2.0.3", + "minimatch": "3.0.4", + "once": "1.4.0", + "path-is-absolute": "1.0.1" + } + }, + "has-unicode": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/has-unicode/-/has-unicode-2.0.1.tgz", + "integrity": "sha1-4Ob+aijPUROIVeCG0Wkedx3iqLk=" + }, + "iconv-lite": { + "version": "0.4.21", + "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.21.tgz", + "integrity": "sha512-En5V9za5mBt2oUA03WGD3TwDv0MKAruqsuxstbMUZaj9W9k/m1CV/9py3l0L5kw9Bln8fdHQmzHSYtvpvTLpKw==", + "requires": { + "safer-buffer": "2.1.2" + } + }, + "ignore-walk": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/ignore-walk/-/ignore-walk-3.0.1.tgz", + "integrity": "sha512-DTVlMx3IYPe0/JJcYP7Gxg7ttZZu3IInhuEhbchuqneY9wWe5Ojy2mXLBaQFUQmo0AW2r3qG7m1mg86js+gnlQ==", + "requires": { + "minimatch": "3.0.4" + } + }, + "inflight": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", + "integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=", + "requires": { + "once": "1.4.0", + "wrappy": "1.0.2" + } + }, + "inherits": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz", + "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=" + }, + "ini": { + "version": "1.3.5", + "resolved": "https://registry.npmjs.org/ini/-/ini-1.3.5.tgz", + "integrity": "sha512-RZY5huIKCMRWDUqZlEi72f/lmXKMvuszcMBduliQ3nnWbx9X/ZBQO7DijMEYS9EhHBb2qacRUMtC7svLwe0lcw==" + }, + "is-fullwidth-code-point": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz", + "integrity": "sha1-754xOG8DGn8NZDr4L95QxFfvAMs=", + "requires": { + "number-is-nan": "1.0.1" + } + }, + "isarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", + "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=" + }, + "minimatch": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz", + "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==", + "requires": { + "brace-expansion": "1.1.11" + } + }, + "minimist": { + "version": "0.0.8", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-0.0.8.tgz", + "integrity": "sha1-hX/Kv8M5fSYluCKCYuhqp6ARsF0=" + }, + "minipass": { + "version": "2.2.4", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-2.2.4.tgz", + "integrity": "sha512-hzXIWWet/BzWhYs2b+u7dRHlruXhwdgvlTMDKC6Cb1U7ps6Ac6yQlR39xsbjWJE377YTCtKwIXIpJ5oP+j5y8g==", + "requires": { + "safe-buffer": "5.1.1", + "yallist": "3.0.2" + }, + "dependencies": { + "yallist": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-3.0.2.tgz", + "integrity": "sha1-hFK0u36Dx8GI2AQcGoN8dz1ti7k=" + } + } + }, + "minizlib": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/minizlib/-/minizlib-1.1.0.tgz", + "integrity": "sha512-4T6Ur/GctZ27nHfpt9THOdRZNgyJ9FZchYO1ceg5S8Q3DNLCKYy44nCZzgCJgcvx2UM8czmqak5BCxJMrq37lA==", + "requires": { + "minipass": "2.2.4" + } + }, + "mkdirp": { + "version": "0.5.1", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.1.tgz", + "integrity": "sha1-MAV0OOrGz3+MR2fzhkjWaX11yQM=", + "requires": { + "minimist": "0.0.8" + } + }, + "ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=" + }, + "needle": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/needle/-/needle-2.2.0.tgz", + "integrity": "sha512-eFagy6c+TYayorXw/qtAdSvaUpEbBsDwDyxYFgLZ0lTojfH7K+OdBqAF7TAFwDokJaGpubpSGG0wO3iC0XPi8w==", + "requires": { + "debug": "2.6.9", + "iconv-lite": "0.4.21", + "sax": "1.2.4" + } + }, + "node-pre-gyp": { + "version": "0.9.1", + "resolved": "https://registry.npmjs.org/node-pre-gyp/-/node-pre-gyp-0.9.1.tgz", + "integrity": "sha1-8RwHUW3ZL4cZnbx+GDjqt81WyeA=", + "requires": { + "detect-libc": "1.0.3", + "mkdirp": "0.5.1", + "needle": "2.2.0", + "nopt": "4.0.1", + "npm-packlist": "1.1.10", + "npmlog": "4.1.2", + "rc": "1.2.6", + "rimraf": "2.6.2", + "semver": "5.5.0", + "tar": "4.4.1" + } + }, + "nopt": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/nopt/-/nopt-4.0.1.tgz", + "integrity": "sha1-0NRoWv1UFRk8jHUFYC0NF81kR00=", + "requires": { + "abbrev": "1.1.1", + "osenv": "0.1.5" + } + }, + "npm-bundled": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/npm-bundled/-/npm-bundled-1.0.3.tgz", + "integrity": "sha512-ByQ3oJ/5ETLyglU2+8dBObvhfWXX8dtPZDMePCahptliFX2iIuhyEszyFk401PZUNQH20vvdW5MLjJxkwU80Ow==" + }, + "npm-packlist": { + "version": "1.1.10", + "resolved": "https://registry.npmjs.org/npm-packlist/-/npm-packlist-1.1.10.tgz", + "integrity": "sha512-AQC0Dyhzn4EiYEfIUjCdMl0JJ61I2ER9ukf/sLxJUcZHfo+VyEfz2rMJgLZSS1v30OxPQe1cN0LZA1xbcaVfWA==", + "requires": { + "ignore-walk": "3.0.1", + "npm-bundled": "1.0.3" + } + }, + "npmlog": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/npmlog/-/npmlog-4.1.2.tgz", + "integrity": "sha512-2uUqazuKlTaSI/dC8AzicUck7+IrEaOnN/e0jd3Xtt1KcGpwx30v50mL7oPyr/h9bL3E4aZccVwpwP+5W9Vjkg==", + "requires": { + "are-we-there-yet": "1.1.4", + "console-control-strings": "1.1.0", + "gauge": "2.7.4", + "set-blocking": "2.0.0" + } + }, + "number-is-nan": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/number-is-nan/-/number-is-nan-1.0.1.tgz", + "integrity": "sha1-CXtgK1NCKlIsGvuHkDGDNpQaAR0=" + }, + "object-assign": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", + "integrity": "sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM=" + }, + "once": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", + "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=", + "requires": { + "wrappy": "1.0.2" + } + }, + "os-homedir": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/os-homedir/-/os-homedir-1.0.2.tgz", + "integrity": "sha1-/7xJiDNuDoM94MFox+8VISGqf7M=" + }, + "os-tmpdir": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/os-tmpdir/-/os-tmpdir-1.0.2.tgz", + "integrity": "sha1-u+Z0BseaqFxc/sdm/lc0VV36EnQ=" + }, + "osenv": { + "version": "0.1.5", + "resolved": "https://registry.npmjs.org/osenv/-/osenv-0.1.5.tgz", + "integrity": "sha512-0CWcCECdMVc2Rw3U5w9ZjqX6ga6ubk1xDVKxtBQPK7wis/0F2r9T6k4ydGYhecl7YUBxBVxhL5oisPsNxAPe2g==", + "requires": { + "os-homedir": "1.0.2", + "os-tmpdir": "1.0.2" + } + }, + "path-is-absolute": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", + "integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18=" + }, + "process-nextick-args": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.0.tgz", + "integrity": "sha512-MtEC1TqN0EU5nephaJ4rAtThHtC86dNN9qCuEhtshvpVBkAW5ZO7BASN9REnF9eoXGcRub+pFuKEpOHE+HbEMw==" + }, + "rc": { + "version": "1.2.6", + "resolved": "https://registry.npmjs.org/rc/-/rc-1.2.6.tgz", + "integrity": "sha1-6xiYnG1PTxYsOZ953dKfODVWgJI=", + "requires": { + "deep-extend": "0.4.2", + "ini": "1.3.5", + "minimist": "1.2.0", + "strip-json-comments": "2.0.1" + }, + "dependencies": { + "minimist": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.0.tgz", + "integrity": "sha1-o1AIsg9BOD7sH7kU9M1d95omQoQ=" + } + } + }, + "readable-stream": { + "version": "2.3.5", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.5.tgz", + "integrity": "sha512-tK0yDhrkygt/knjowCUiWP9YdV7c5R+8cR0r/kt9ZhBU906Fs6RpQJCEilamRJj1Nx2rWI6LkW9gKqjTkshhEw==", + "requires": { + "core-util-is": "1.0.2", + "inherits": "2.0.3", + "isarray": "1.0.0", + "process-nextick-args": "2.0.0", + "safe-buffer": "5.1.1", + "string_decoder": "1.0.3", + "util-deprecate": "1.0.2" + } + }, + "rimraf": { + "version": "2.6.2", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.6.2.tgz", + "integrity": "sha512-lreewLK/BlghmxtfH36YYVg1i8IAce4TI7oao75I1g245+6BctqTVQiBP3YUJ9C6DQOXJmkYR9X9fCLtCOJc5w==", + "requires": { + "glob": "7.1.2" + } + }, + "safe-buffer": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.1.tgz", + "integrity": "sha512-kKvNJn6Mm93gAczWVJg7wH+wGYWNrDHdWvpUmHyEsgCtIwwo3bqPtV4tR5tuPaUhTOo/kvhVwd8XwwOllGYkbg==" + }, + "safer-buffer": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", + "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==" + }, + "sax": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/sax/-/sax-1.2.4.tgz", + "integrity": "sha512-NqVDv9TpANUjFm0N8uM5GxL36UgKi9/atZw+x7YFnQ8ckwFGKrl4xX4yWtrey3UJm5nP1kUbnYgLopqWNSRhWw==" + }, + "semver": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.5.0.tgz", + "integrity": "sha512-4SJ3dm0WAwWy/NVeioZh5AntkdJoWKxHxcmyP622fOkgHa4z3R0TdBJICINyaSDE6uNwVc8gZr+ZinwZAH4xIA==" + }, + "set-blocking": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/set-blocking/-/set-blocking-2.0.0.tgz", + "integrity": "sha1-BF+XgtARrppoA93TgrJDkrPYkPc=" + }, + "signal-exit": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.2.tgz", + "integrity": "sha1-tf3AjxKH6hF4Yo5BXiUTK3NkbG0=" + }, + "string-width": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-1.0.2.tgz", + "integrity": "sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M=", + "requires": { + "code-point-at": "1.1.0", + "is-fullwidth-code-point": "1.0.0", + "strip-ansi": "3.0.1" + } + }, + "string_decoder": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.0.3.tgz", + "integrity": "sha512-4AH6Z5fzNNBcH+6XDMfA/BTt87skxqJlO0lAh3Dker5zThcAxG6mKz+iGu308UKoPPQ8Dcqx/4JhujzltRa+hQ==", + "requires": { + "safe-buffer": "5.1.1" + } + }, + "strip-ansi": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", + "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", + "requires": { + "ansi-regex": "2.1.1" + } + }, + "strip-json-comments": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-2.0.1.tgz", + "integrity": "sha1-PFMZQukIwml8DsNEhYwobHygpgo=" + }, + "tar": { + "version": "4.4.1", + "resolved": "https://registry.npmjs.org/tar/-/tar-4.4.1.tgz", + "integrity": "sha512-O+v1r9yN4tOsvl90p5HAP4AEqbYhx4036AGMm075fH9F8Qwi3oJ+v4u50FkT/KkvywNGtwkk0zRI+8eYm1X/xg==", + "requires": { + "chownr": "1.0.1", + "fs-minipass": "1.2.5", + "minipass": "2.2.4", + "minizlib": "1.1.0", + "mkdirp": "0.5.1", + "safe-buffer": "5.1.1", + "yallist": "3.0.2" + }, + "dependencies": { + "yallist": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-3.0.2.tgz", + "integrity": "sha1-hFK0u36Dx8GI2AQcGoN8dz1ti7k=" + } + } + }, + "util-deprecate": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", + "integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=" + }, + "wide-align": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/wide-align/-/wide-align-1.1.2.tgz", + "integrity": "sha512-ijDLlyQ7s6x1JgCLur53osjm/UXUYD9+0PbYKrBsYisYXzCxN+HC3mYDNy/dWdmf3AwqwU3CXwDCvsNgGK1S0w==", + "requires": { + "string-width": "1.0.2" + } + }, + "wrappy": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", + "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=" + } + } + }, + "brace-expansion": { + "version": "1.1.11", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", + "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", + "requires": { + "balanced-match": "1.0.0", + "concat-map": "0.0.1" + } + }, + "concat-map": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", + "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=" + }, + "core-js": { + "version": "2.5.7", + "resolved": "https://registry.npmjs.org/core-js/-/core-js-2.5.7.tgz", + "integrity": "sha512-RszJCAxg/PP6uzXVXL6BsxSXx/B05oJAQ2vkJRjyjrEcNVycaqOmNb5OTxZPE3xa5gwZduqza6L9JOCenh/Ecw==" + }, + "escape-string-regexp": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", + "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=" + }, + "inherits-ex": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/inherits-ex/-/inherits-ex-1.2.3.tgz", + "integrity": "sha512-DCZqD7BpjXqaha8IKcoAE3ZZr6Hi12ropV1h+3pBnirE14mNRwLuYySvYxUSBemTQ40SjAxPL8BTk2Xw/3IF9w==", + "requires": { + "xtend": "4.0.1" + } + }, + "jquery": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/jquery/-/jquery-3.3.1.tgz", + "integrity": "sha512-Ubldcmxp5np52/ENotGxlLe6aGMvmF4R8S6tZjsP6Knsaxd/xp3Zrh50cG93lR6nPXyUFwzN3ZSOQI0wRJNdGg==" + }, + "media-typer": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/media-typer/-/media-typer-0.3.0.tgz", + "integrity": "sha1-hxDXrwqmJvj/+hzgAWhUUmMlV0g=" + }, + "meteor-node-stubs": { + "version": "0.3.3", + "resolved": "https://registry.npmjs.org/meteor-node-stubs/-/meteor-node-stubs-0.3.3.tgz", + "integrity": "sha512-TI1aQRK0vqs94OCkUMkmf5lXNWfIsjSaEDP1inUuwRGt9w8/S2V+HdRikz9r1k/gew+7NcJieaqHsHX7pSTEgA==", + "requires": { + "assert": "1.4.1", + "browserify-zlib": "0.1.4", + "buffer": "4.9.1", + "console-browserify": "1.1.0", + "constants-browserify": "1.0.0", + "crypto-browserify": "3.12.0", + "domain-browser": "1.2.0", + "events": "1.1.1", + "https-browserify": "0.0.1", + "os-browserify": "0.2.1", + "path-browserify": "0.0.0", + "process": "0.11.10", + "punycode": "1.4.1", + "querystring-es3": "0.2.1", + "readable-stream": "git+https://github.com/meteor/readable-stream.git#c688cdd193549919b840e8d72a86682d91961e12", + "stream-browserify": "2.0.1", + "stream-http": "2.8.0", + "string_decoder": "1.1.0", + "timers-browserify": "1.4.2", + "tty-browserify": "0.0.0", + "url": "0.11.0", + "util": "0.10.3", + "vm-browserify": "0.0.4" + }, + "dependencies": { + "asn1.js": { + "version": "4.10.1", + "resolved": "https://registry.npmjs.org/asn1.js/-/asn1.js-4.10.1.tgz", + "integrity": "sha512-p32cOF5q0Zqs9uBiONKYLm6BClCoBCM5O9JfeUSlnQLBTxYdTK+pW+nXflm8UkKd2UYlEbYz5qEi0JuZR9ckSw==", + "requires": { + "bn.js": "4.11.8", + "inherits": "2.0.1", + "minimalistic-assert": "1.0.0" + } + }, + "assert": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/assert/-/assert-1.4.1.tgz", + "integrity": "sha1-mZEtWRg2tab1s0XA8H7vwI/GXZE=", + "requires": { + "util": "0.10.3" + } + }, + "balanced-match": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.0.tgz", + "integrity": "sha1-ibTRmasr7kneFk6gK4nORi1xt2c=" + }, + "base64-js": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.2.3.tgz", + "integrity": "sha512-MsAhsUW1GxCdgYSO6tAfZrNapmUKk7mWx/k5mFY/A1gBtkaCaNapTg+FExCw1r9yeaZhqx/xPg43xgTFH6KL5w==" + }, + "bn.js": { + "version": "4.11.8", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.11.8.tgz", + "integrity": "sha512-ItfYfPLkWHUjckQCk8xC+LwxgK8NYcXywGigJgSwOP8Y2iyWT4f2vsZnoOXTTbo+o5yXmIUJ4gn5538SO5S3gA==" + }, + "brace-expansion": { + "version": "1.1.11", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", + "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", + "requires": { + "balanced-match": "1.0.0", + "concat-map": "0.0.1" + } + }, + "brorand": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/brorand/-/brorand-1.1.0.tgz", + "integrity": "sha1-EsJe/kCkXjwyPrhnWgoM5XsiNx8=" + }, + "browserify-aes": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/browserify-aes/-/browserify-aes-1.1.1.tgz", + "integrity": "sha512-UGnTYAnB2a3YuYKIRy1/4FB2HdM866E0qC46JXvVTYKlBlZlnvfpSfY6OKfXZAkv70eJ2a1SqzpAo5CRhZGDFg==", + "requires": { + "buffer-xor": "1.0.3", + "cipher-base": "1.0.4", + "create-hash": "1.1.3", + "evp_bytestokey": "1.0.3", + "inherits": "2.0.1", + "safe-buffer": "5.1.1" + } + }, + "browserify-cipher": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/browserify-cipher/-/browserify-cipher-1.0.0.tgz", + "integrity": "sha1-mYgkSHS/XtTijalWZtzWasj8Njo=", + "requires": { + "browserify-aes": "1.1.1", + "browserify-des": "1.0.0", + "evp_bytestokey": "1.0.3" + } + }, + "browserify-des": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/browserify-des/-/browserify-des-1.0.0.tgz", + "integrity": "sha1-2qJ3cXRwki7S/hhZQRihdUOXId0=", + "requires": { + "cipher-base": "1.0.4", + "des.js": "1.0.0", + "inherits": "2.0.1" + } + }, + "browserify-rsa": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/browserify-rsa/-/browserify-rsa-4.0.1.tgz", + "integrity": "sha1-IeCr+vbyApzy+vsTNWenAdQTVSQ=", + "requires": { + "bn.js": "4.11.8", + "randombytes": "2.0.6" + } + }, + "browserify-sign": { + "version": "4.0.4", + "resolved": "https://registry.npmjs.org/browserify-sign/-/browserify-sign-4.0.4.tgz", + "integrity": "sha1-qk62jl17ZYuqa/alfmMMvXqT0pg=", + "requires": { + "bn.js": "4.11.8", + "browserify-rsa": "4.0.1", + "create-hash": "1.1.3", + "create-hmac": "1.1.6", + "elliptic": "6.4.0", + "inherits": "2.0.1", + "parse-asn1": "5.1.0" + } + }, + "browserify-zlib": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/browserify-zlib/-/browserify-zlib-0.1.4.tgz", + "integrity": "sha1-uzX4pRn2AOD6a4SFJByXnQFB+y0=", + "requires": { + "pako": "0.2.9" + } + }, + "buffer": { + "version": "4.9.1", + "resolved": "https://registry.npmjs.org/buffer/-/buffer-4.9.1.tgz", + "integrity": "sha1-bRu2AbB6TvztlwlBMgkwJ8lbwpg=", + "requires": { + "base64-js": "1.2.3", + "ieee754": "1.1.8", + "isarray": "1.0.0" + } + }, + "buffer-xor": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/buffer-xor/-/buffer-xor-1.0.3.tgz", + "integrity": "sha1-JuYe0UIvtw3ULm42cp7VHYVf6Nk=" + }, + "builtin-status-codes": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/builtin-status-codes/-/builtin-status-codes-3.0.0.tgz", + "integrity": "sha1-hZgoeOIbmOHGZCXgPQF0eI9Wnug=" + }, + "cipher-base": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/cipher-base/-/cipher-base-1.0.4.tgz", + "integrity": "sha512-Kkht5ye6ZGmwv40uUDZztayT2ThLQGfnj/T71N/XzeZeo3nf8foyW7zGTsPYkEya3m5f3cAypH+qe7YOrM1U2Q==", + "requires": { + "inherits": "2.0.1", + "safe-buffer": "5.1.1" + } + }, + "concat-map": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", + "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=" + }, + "console-browserify": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/console-browserify/-/console-browserify-1.1.0.tgz", + "integrity": "sha1-8CQcRXMKn8YyOyBtvzjtx0HQuxA=", + "requires": { + "date-now": "0.1.4" + } + }, + "constants-browserify": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/constants-browserify/-/constants-browserify-1.0.0.tgz", + "integrity": "sha1-wguW2MYXdIqvHBYCF2DNJ/y4y3U=" + }, + "create-ecdh": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/create-ecdh/-/create-ecdh-4.0.0.tgz", + "integrity": "sha1-iIxyNZbN92EvZJgjPuvXo1MBc30=", + "requires": { + "bn.js": "4.11.8", + "elliptic": "6.4.0" + } + }, + "create-hash": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/create-hash/-/create-hash-1.1.3.tgz", + "integrity": "sha1-YGBCrIuSYnUPSDyt2rD1gZFy2P0=", + "requires": { + "cipher-base": "1.0.4", + "inherits": "2.0.1", + "ripemd160": "2.0.1", + "sha.js": "2.4.10" + } + }, + "create-hmac": { + "version": "1.1.6", + "resolved": "https://registry.npmjs.org/create-hmac/-/create-hmac-1.1.6.tgz", + "integrity": "sha1-rLniIaThe9sHbpBlfEK5PjcmzwY=", + "requires": { + "cipher-base": "1.0.4", + "create-hash": "1.1.3", + "inherits": "2.0.1", + "ripemd160": "2.0.1", + "safe-buffer": "5.1.1", + "sha.js": "2.4.10" + } + }, + "crypto-browserify": { + "version": "3.12.0", + "resolved": "https://registry.npmjs.org/crypto-browserify/-/crypto-browserify-3.12.0.tgz", + "integrity": "sha512-fz4spIh+znjO2VjL+IdhEpRJ3YN6sMzITSBijk6FK2UvTqruSQW+/cCZTSNsMiZNvUeq0CqurF+dAbyiGOY6Wg==", + "requires": { + "browserify-cipher": "1.0.0", + "browserify-sign": "4.0.4", + "create-ecdh": "4.0.0", + "create-hash": "1.1.3", + "create-hmac": "1.1.6", + "diffie-hellman": "5.0.2", + "inherits": "2.0.1", + "pbkdf2": "3.0.14", + "public-encrypt": "4.0.0", + "randombytes": "2.0.6", + "randomfill": "1.0.4" + } + }, + "date-now": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/date-now/-/date-now-0.1.4.tgz", + "integrity": "sha1-6vQ5/U1ISK105cx9vvIAZyueNFs=" + }, + "des.js": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/des.js/-/des.js-1.0.0.tgz", + "integrity": "sha1-wHTS4qpqipoH29YfmhXCzYPsjsw=", + "requires": { + "inherits": "2.0.1", + "minimalistic-assert": "1.0.0" + } + }, + "diffie-hellman": { + "version": "5.0.2", + "resolved": "https://registry.npmjs.org/diffie-hellman/-/diffie-hellman-5.0.2.tgz", + "integrity": "sha1-tYNXOScM/ias9jIJn97SoH8gnl4=", + "requires": { + "bn.js": "4.11.8", + "miller-rabin": "4.0.1", + "randombytes": "2.0.6" + } + }, + "domain-browser": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/domain-browser/-/domain-browser-1.2.0.tgz", + "integrity": "sha512-jnjyiM6eRyZl2H+W8Q/zLMA481hzi0eszAaBUzIVnmYVDBbnLxVNnfu1HgEBvCbL+71FrxMl3E6lpKH7Ge3OXA==" + }, + "elliptic": { + "version": "6.4.0", + "resolved": "https://registry.npmjs.org/elliptic/-/elliptic-6.4.0.tgz", + "integrity": "sha1-ysmvh2LIWDYYcAPI3+GT5eLq5d8=", + "requires": { + "bn.js": "4.11.8", + "brorand": "1.1.0", + "hash.js": "1.1.3", + "hmac-drbg": "1.0.1", + "inherits": "2.0.1", + "minimalistic-assert": "1.0.0", + "minimalistic-crypto-utils": "1.0.1" + } + }, + "events": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/events/-/events-1.1.1.tgz", + "integrity": "sha1-nr23Y1rQmccNzEwqH1AEKI6L2SQ=" + }, + "evp_bytestokey": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/evp_bytestokey/-/evp_bytestokey-1.0.3.tgz", + "integrity": "sha512-/f2Go4TognH/KvCISP7OUsHn85hT9nUkxxA9BEWxFn+Oj9o8ZNLm/40hdlgSLyuOimsrTKLUMEorQexp/aPQeA==", + "requires": { + "md5.js": "1.3.4", + "safe-buffer": "5.1.1" + } + }, + "fs.realpath": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", + "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=" + }, + "glob": { + "version": "7.1.2", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.2.tgz", + "integrity": "sha512-MJTUg1kjuLeQCJ+ccE4Vpa6kKVXkPYJ2mOCQyUuKLcLQsdrMCpBPUi8qVE6+YuaJkozeA9NusTAw3hLr8Xe5EQ==", + "requires": { + "fs.realpath": "1.0.0", + "inflight": "1.0.6", + "inherits": "2.0.1", + "minimatch": "3.0.4", + "once": "1.4.0", + "path-is-absolute": "1.0.1" + } + }, + "hash-base": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/hash-base/-/hash-base-2.0.2.tgz", + "integrity": "sha1-ZuodhW206KVHDK32/OI65SRO8uE=", + "requires": { + "inherits": "2.0.1" + } + }, + "hash.js": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/hash.js/-/hash.js-1.1.3.tgz", + "integrity": "sha512-/UETyP0W22QILqS+6HowevwhEFJ3MBJnwTf75Qob9Wz9t0DPuisL8kW8YZMK62dHAKE1c1p+gY1TtOLY+USEHA==", + "requires": { + "inherits": "2.0.3", + "minimalistic-assert": "1.0.0" + }, + "dependencies": { + "inherits": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz", + "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=" + } + } + }, + "hmac-drbg": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/hmac-drbg/-/hmac-drbg-1.0.1.tgz", + "integrity": "sha1-0nRXAQJabHdabFRXk+1QL8DGSaE=", + "requires": { + "hash.js": "1.1.3", + "minimalistic-assert": "1.0.0", + "minimalistic-crypto-utils": "1.0.1" + } + }, + "https-browserify": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/https-browserify/-/https-browserify-0.0.1.tgz", + "integrity": "sha1-P5E2XKvmC3ftDruiS0VOPgnZWoI=" + }, + "ieee754": { + "version": "1.1.8", + "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.1.8.tgz", + "integrity": "sha1-vjPUCsEO8ZJnAfbwii2G+/0a0+Q=" + }, + "indexof": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/indexof/-/indexof-0.0.1.tgz", + "integrity": "sha1-gtwzbSMrkGIXnQWrMpOmYFn9Q10=" + }, + "inflight": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", + "integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=", + "requires": { + "once": "1.4.0", + "wrappy": "1.0.2" + } + }, + "inherits": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.1.tgz", + "integrity": "sha1-sX0I0ya0Qj5Wjv9xn5GwscvfafE=" + }, + "isarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", + "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=" + }, + "md5.js": { + "version": "1.3.4", + "resolved": "https://registry.npmjs.org/md5.js/-/md5.js-1.3.4.tgz", + "integrity": "sha1-6b296UogpawYsENA/Fdk1bCdkB0=", + "requires": { + "hash-base": "3.0.4", + "inherits": "2.0.1" + }, + "dependencies": { + "hash-base": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/hash-base/-/hash-base-3.0.4.tgz", + "integrity": "sha1-X8hoaEfs1zSZQDMZprCj8/auSRg=", + "requires": { + "inherits": "2.0.1", + "safe-buffer": "5.1.1" + } + } + } + }, + "miller-rabin": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/miller-rabin/-/miller-rabin-4.0.1.tgz", + "integrity": "sha512-115fLhvZVqWwHPbClyntxEVfVDfl9DLLTuJvq3g2O/Oxi8AiNouAHvDSzHS0viUJc+V5vm3eq91Xwqn9dp4jRA==", + "requires": { + "bn.js": "4.11.8", + "brorand": "1.1.0" + } + }, + "minimalistic-assert": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/minimalistic-assert/-/minimalistic-assert-1.0.0.tgz", + "integrity": "sha1-cCvi3aazf0g2vLP121ZkG2Sh09M=" + }, + "minimalistic-crypto-utils": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/minimalistic-crypto-utils/-/minimalistic-crypto-utils-1.0.1.tgz", + "integrity": "sha1-9sAMHAsIIkblxNmd+4x8CDsrWCo=" + }, + "minimatch": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz", + "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==", + "requires": { + "brace-expansion": "1.1.11" + } + }, + "once": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", + "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=", + "requires": { + "wrappy": "1.0.2" + } + }, + "os-browserify": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/os-browserify/-/os-browserify-0.2.1.tgz", + "integrity": "sha1-Y/xMzuXS13Y9Jrv4YBB45sLgBE8=" + }, + "pako": { + "version": "0.2.9", + "resolved": "https://registry.npmjs.org/pako/-/pako-0.2.9.tgz", + "integrity": "sha1-8/dSL073gjSNqBYbrZ7P1Rv4OnU=" + }, + "parse-asn1": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/parse-asn1/-/parse-asn1-5.1.0.tgz", + "integrity": "sha1-N8T5t+06tlx0gXtfJICTf7+XxxI=", + "requires": { + "asn1.js": "4.10.1", + "browserify-aes": "1.1.1", + "create-hash": "1.1.3", + "evp_bytestokey": "1.0.3", + "pbkdf2": "3.0.14" + } + }, + "path-browserify": { + "version": "0.0.0", + "resolved": "https://registry.npmjs.org/path-browserify/-/path-browserify-0.0.0.tgz", + "integrity": "sha1-oLhwcpquIUAFt9UDLsLLuw+0RRo=" + }, + "path-is-absolute": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", + "integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18=" + }, + "pbkdf2": { + "version": "3.0.14", + "resolved": "https://registry.npmjs.org/pbkdf2/-/pbkdf2-3.0.14.tgz", + "integrity": "sha512-gjsZW9O34fm0R7PaLHRJmLLVfSoesxztjPjE9o6R+qtVJij90ltg1joIovN9GKrRW3t1PzhDDG3UMEMFfZ+1wA==", + "requires": { + "create-hash": "1.1.3", + "create-hmac": "1.1.6", + "ripemd160": "2.0.1", + "safe-buffer": "5.1.1", + "sha.js": "2.4.10" + } + }, + "process": { + "version": "0.11.10", + "resolved": "https://registry.npmjs.org/process/-/process-0.11.10.tgz", + "integrity": "sha1-czIwDoQBYb2j5podHZGn1LwW8YI=" + }, + "process-nextick-args": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.0.tgz", + "integrity": "sha512-MtEC1TqN0EU5nephaJ4rAtThHtC86dNN9qCuEhtshvpVBkAW5ZO7BASN9REnF9eoXGcRub+pFuKEpOHE+HbEMw==" + }, + "public-encrypt": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/public-encrypt/-/public-encrypt-4.0.0.tgz", + "integrity": "sha1-OfaZ86RlYN1eusvKaTyvfGXBjMY=", + "requires": { + "bn.js": "4.11.8", + "browserify-rsa": "4.0.1", + "create-hash": "1.1.3", + "parse-asn1": "5.1.0", + "randombytes": "2.0.6" + } + }, + "punycode": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-1.4.1.tgz", + "integrity": "sha1-wNWmOycYgArY4esPpSachN1BhF4=" + }, + "querystring": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/querystring/-/querystring-0.2.0.tgz", + "integrity": "sha1-sgmEkgO7Jd+CDadW50cAWHhSFiA=" + }, + "querystring-es3": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/querystring-es3/-/querystring-es3-0.2.1.tgz", + "integrity": "sha1-nsYfeQSYdXB9aUFFlv2Qek1xHnM=" + }, + "randombytes": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/randombytes/-/randombytes-2.0.6.tgz", + "integrity": "sha512-CIQ5OFxf4Jou6uOKe9t1AOgqpeU5fd70A8NPdHSGeYXqXsPe6peOwI0cUl88RWZ6sP1vPMV3avd/R6cZ5/sP1A==", + "requires": { + "safe-buffer": "5.1.1" + } + }, + "randomfill": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/randomfill/-/randomfill-1.0.4.tgz", + "integrity": "sha512-87lcbR8+MhcWcUiQ+9e+Rwx8MyR2P7qnt15ynUlbm3TU/fjbgz4GsvfSUDTemtCCtVCqb4ZcEFlyPNTh9bBTLw==", + "requires": { + "randombytes": "2.0.6", + "safe-buffer": "5.1.1" + } + }, + "readable-stream": { + "version": "git+https://github.com/meteor/readable-stream.git#c688cdd193549919b840e8d72a86682d91961e12", + "requires": { + "inherits": "2.0.3", + "isarray": "1.0.0", + "process-nextick-args": "2.0.0", + "safe-buffer": "5.1.1", + "string_decoder": "1.1.0", + "util-deprecate": "1.0.2" + }, + "dependencies": { + "inherits": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz", + "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=" + } + } + }, + "rimraf": { + "version": "2.6.2", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.6.2.tgz", + "integrity": "sha512-lreewLK/BlghmxtfH36YYVg1i8IAce4TI7oao75I1g245+6BctqTVQiBP3YUJ9C6DQOXJmkYR9X9fCLtCOJc5w==", + "requires": { + "glob": "7.1.2" + } + }, + "ripemd160": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/ripemd160/-/ripemd160-2.0.1.tgz", + "integrity": "sha1-D0WEKVxTo2KK9+bXmsohzlfRxuc=", + "requires": { + "hash-base": "2.0.2", + "inherits": "2.0.1" + } + }, + "safe-buffer": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.1.tgz", + "integrity": "sha512-kKvNJn6Mm93gAczWVJg7wH+wGYWNrDHdWvpUmHyEsgCtIwwo3bqPtV4tR5tuPaUhTOo/kvhVwd8XwwOllGYkbg==" + }, + "sha.js": { + "version": "2.4.10", + "resolved": "https://registry.npmjs.org/sha.js/-/sha.js-2.4.10.tgz", + "integrity": "sha512-vnwmrFDlOExK4Nm16J2KMWHLrp14lBrjxMxBJpu++EnsuBmpiYaM/MEs46Vxxm/4FvdP5yTwuCTO9it5FSjrqA==", + "requires": { + "inherits": "2.0.1", + "safe-buffer": "5.1.1" + } + }, + "stream-browserify": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/stream-browserify/-/stream-browserify-2.0.1.tgz", + "integrity": "sha1-ZiZu5fm9uZQKTkUUyvtDu3Hlyds=", + "requires": { + "inherits": "2.0.1", + "readable-stream": "git+https://github.com/meteor/readable-stream.git#c688cdd193549919b840e8d72a86682d91961e12" + } + }, + "stream-http": { + "version": "2.8.0", + "resolved": "https://registry.npmjs.org/stream-http/-/stream-http-2.8.0.tgz", + "integrity": "sha512-sZOFxI/5xw058XIRHl4dU3dZ+TTOIGJR78Dvo0oEAejIt4ou27k+3ne1zYmCV+v7UucbxIFQuOgnkTVHh8YPnw==", + "requires": { + "builtin-status-codes": "3.0.0", + "inherits": "2.0.1", + "readable-stream": "git+https://github.com/meteor/readable-stream.git#c688cdd193549919b840e8d72a86682d91961e12", + "to-arraybuffer": "1.0.1", + "xtend": "4.0.1" + } + }, + "string_decoder": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.0.tgz", + "integrity": "sha512-8zQpRF6juocE69ae7CSPmYEGJe4VCXwP6S6dxUWI7i53Gwv54/ec41fiUA+X7BPGGv7fRSQJjBQVa0gomGaOgg==", + "requires": { + "safe-buffer": "5.1.1" + } + }, + "timers-browserify": { + "version": "1.4.2", + "resolved": "https://registry.npmjs.org/timers-browserify/-/timers-browserify-1.4.2.tgz", + "integrity": "sha1-ycWLV1voQHN1y14kYtrO50NZ9B0=", + "requires": { + "process": "0.11.10" + } + }, + "to-arraybuffer": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/to-arraybuffer/-/to-arraybuffer-1.0.1.tgz", + "integrity": "sha1-fSKbH8xjfkZsoIEYCDanqr/4P0M=" + }, + "tty-browserify": { + "version": "0.0.0", + "resolved": "https://registry.npmjs.org/tty-browserify/-/tty-browserify-0.0.0.tgz", + "integrity": "sha1-oVe6QC2iTpv5V/mqadUk7tQpAaY=" + }, + "url": { + "version": "0.11.0", + "resolved": "https://registry.npmjs.org/url/-/url-0.11.0.tgz", + "integrity": "sha1-ODjpfPxgUh63PFJajlW/3Z4uKPE=", + "requires": { + "punycode": "1.3.2", + "querystring": "0.2.0" + }, + "dependencies": { + "punycode": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-1.3.2.tgz", + "integrity": "sha1-llOgNvt8HuQjQvIyXM7v6jkmxI0=" + } + } + }, + "util": { + "version": "0.10.3", + "resolved": "https://registry.npmjs.org/util/-/util-0.10.3.tgz", + "integrity": "sha1-evsa/lCAUkZInj23/g7TeTNqwPk=", + "requires": { + "inherits": "2.0.1" + } + }, + "util-deprecate": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", + "integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=" + }, + "vm-browserify": { + "version": "0.0.4", + "resolved": "https://registry.npmjs.org/vm-browserify/-/vm-browserify-0.0.4.tgz", + "integrity": "sha1-XX6kW7755Kb/ZflUOOCofDV9WnM=", + "requires": { + "indexof": "0.0.1" + } + }, + "wrappy": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", + "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=" + }, + "xtend": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.1.tgz", + "integrity": "sha1-pcbVMr5lbiPbgg77lDofBJmNY68=" + } + } + }, + "mime-db": { + "version": "1.35.0", + "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.35.0.tgz", + "integrity": "sha512-JWT/IcCTsB0Io3AhWUMjRqucrHSPsSf2xKLaRldJVULioggvkJvggZ3VXNNSRkCddE6D+BUI4HEIZIA2OjwIvg==" + }, + "mime-type": { + "version": "3.0.5", + "resolved": "https://registry.npmjs.org/mime-type/-/mime-type-3.0.5.tgz", + "integrity": "sha1-ftKSan2oImifgSVPWYf+lQNiLpo=", + "requires": { + "media-typer": "0.3.0", + "minimatch": "3.0.4", + "path.js": "1.0.7", + "util-ex": "0.3.15" + } + }, + "minimatch": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz", + "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==", + "requires": { + "brace-expansion": "1.1.11" + } + }, + "moment": { + "version": "2.22.2", + "resolved": "https://registry.npmjs.org/moment/-/moment-2.22.2.tgz", + "integrity": "sha1-PCV/mDn8DpP/UxSWMiOeuQeD/2Y=" + }, + "nan": { + "version": "2.10.0", + "resolved": "https://registry.npmjs.org/nan/-/nan-2.10.0.tgz", + "integrity": "sha512-bAdJv7fBLhWC+/Bls0Oza+mvTaNQtP+1RyhhhvD95pgUJz6XM5IzgmxOkItJ9tkoCiplvAnXI1tNmmUD/eScyA==" + }, + "path.js": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/path.js/-/path.js-1.0.7.tgz", + "integrity": "sha1-fRNrYH3hm/2YugaIdJJih+ZTSTk=", + "requires": { + "escape-string-regexp": "1.0.5", + "inherits-ex": "1.2.3", + "util-ex": "0.3.15" + } + }, + "regenerator-runtime": { + "version": "0.12.0", + "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.12.0.tgz", + "integrity": "sha512-SpV2LhF5Dm9UYMEprB3WwsBnWwqTrmjrm2UZb42cl2G02WVGgx7Mg8aa9pdLEKp6hZ+/abcMc2NxKA8f02EG2w==" + }, + "sprintf-js": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.1.1.tgz", + "integrity": "sha1-Nr54Mgr+WAH2zqPueLblqrlA6gw=" + }, + "sweetalert2": { + "version": "7.25.0", + "resolved": "https://registry.npmjs.org/sweetalert2/-/sweetalert2-7.25.0.tgz", + "integrity": "sha512-RwwhSnnLnTWYug/a7rDV6yWee/E6s13c2qkn61Flw6/ZUauIxcbKXz1bTdb/LBzykumI+bjwsJCLgEaFq6t6WA==" + }, + "toastr": { + "version": "2.1.4", + "resolved": "https://registry.npmjs.org/toastr/-/toastr-2.1.4.tgz", + "integrity": "sha1-i0O+ZPudDEFIcURvLbjoyk6V8YE=", + "requires": { + "jquery": "3.3.1" + } + }, + "underscore": { + "version": "1.9.1", + "resolved": "https://registry.npmjs.org/underscore/-/underscore-1.9.1.tgz", + "integrity": "sha512-5/4etnCkd9c8gwgowi5/om/mYO5ajCaOgdzj/oW+0eQV9WxKBDZw5+ycmKmeaTXjInS/W0BzpGLo2xR2aBwZdg==" + }, + "underscore.string": { + "version": "3.3.4", + "resolved": "https://registry.npmjs.org/underscore.string/-/underscore.string-3.3.4.tgz", + "integrity": "sha1-LCo/n4PmR2L9xF5s6sZRQoZCE9s=", + "requires": { + "sprintf-js": "1.1.1", + "util-deprecate": "1.0.2" + } + }, + "util-deprecate": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", + "integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=" + }, + "util-ex": { + "version": "0.3.15", + "resolved": "https://registry.npmjs.org/util-ex/-/util-ex-0.3.15.tgz", + "integrity": "sha1-+SYc2hPEMn0HQMvme+Eife2LAFg=", + "requires": { + "inherits-ex": "1.2.3", + "xtend": "4.0.1" + } + }, + "xtend": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.1.tgz", + "integrity": "sha1-pcbVMr5lbiPbgg77lDofBJmNY68=" + } + } +} diff --git a/packages/rocketchat-livechat/client/views/app/livechatAppearance.js b/packages/rocketchat-livechat/client/views/app/livechatAppearance.js index bad515522e0..2776756385b 100644 --- a/packages/rocketchat-livechat/client/views/app/livechatAppearance.js +++ b/packages/rocketchat-livechat/client/views/app/livechatAppearance.js @@ -266,7 +266,7 @@ Template.livechatAppearance.events({ instance[e.currentTarget.name].set(e.currentTarget.checked); }, 'change .preview-settings, keyup .preview-settings'(e, instance) { - let value = e.currentTarget.value; + let { value } = e.currentTarget; if (e.currentTarget.type === 'radio') { value = value === 'true'; } diff --git a/packages/rocketchat-livechat/client/views/app/livechatOfficeHours.js b/packages/rocketchat-livechat/client/views/app/livechatOfficeHours.js index 51d7f16bb73..08d45cb4f50 100644 --- a/packages/rocketchat-livechat/client/views/app/livechatOfficeHours.js +++ b/packages/rocketchat-livechat/client/views/app/livechatOfficeHours.js @@ -66,7 +66,7 @@ Template.livechatOfficeHours.events({ instance.dayVars[temp[0]][temp[1]].set(e.target.checked); }, 'change .preview-settings, keyup .preview-settings'(e, instance) { - let value = e.currentTarget.value; + let { value } = e.currentTarget; if (e.currentTarget.type === 'radio') { value = value === 'true'; instance[e.currentTarget.name].set(value); diff --git a/packages/rocketchat-livechat/imports/server/rest/sms.js b/packages/rocketchat-livechat/imports/server/rest/sms.js index 37d110c0299..1f4b9ccce17 100644 --- a/packages/rocketchat-livechat/imports/server/rest/sms.js +++ b/packages/rocketchat-livechat/imports/server/rest/sms.js @@ -51,7 +51,7 @@ RocketChat.API.v1.addRoute('livechat/sms-incoming/:service', { message_link: curr.url, }; - const contentType = curr.contentType; + const { contentType } = curr; switch (contentType.substr(0, contentType.indexOf('/'))) { case 'image': attachment.image_url = curr.url; diff --git a/packages/rocketchat-livechat/livechat.js b/packages/rocketchat-livechat/livechat.js index 09a688dfc2b..771a1457de9 100644 --- a/packages/rocketchat-livechat/livechat.js +++ b/packages/rocketchat-livechat/livechat.js @@ -3,7 +3,7 @@ import _ from 'underscore'; import url from 'url'; WebApp = Package.webapp.WebApp; -const Autoupdate = Package.autoupdate.Autoupdate; +const { Autoupdate } = Package.autoupdate.Autoupdate; WebApp.connectHandlers.use('/livechat', Meteor.bindEnvironment((req, res, next) => { const reqUrl = url.parse(req.url); diff --git a/packages/rocketchat-livechat/server/lib/Livechat.js b/packages/rocketchat-livechat/server/lib/Livechat.js index df81b9bfa27..ba1f95a081c 100644 --- a/packages/rocketchat-livechat/server/lib/Livechat.js +++ b/packages/rocketchat-livechat/server/lib/Livechat.js @@ -366,7 +366,7 @@ RocketChat.Livechat = { return RocketChat.Livechat.returnRoomAsInquiry(room._id, transferData.departmentId); } - const servedBy = room.servedBy; + const { servedBy } = room; if (agent && agent.agentId !== servedBy._id) { RocketChat.models.Rooms.changeAgentByRoomId(room._id, agent); diff --git a/packages/rocketchat-livestream/server/functions/livestream.js b/packages/rocketchat-livestream/server/functions/livestream.js index 08077bc5a86..2b91962bf99 100644 --- a/packages/rocketchat-livestream/server/functions/livestream.js +++ b/packages/rocketchat-livestream/server/functions/livestream.js @@ -1,5 +1,5 @@ import google from 'googleapis'; -const OAuth2 = google.auth.OAuth2; +const { OAuth2 } = google.auth; const p = (fn) => new Promise(function(resolve, reject) { diff --git a/packages/rocketchat-livestream/server/routes.js b/packages/rocketchat-livestream/server/routes.js index 186fb6e70ec..9d9436333a4 100644 --- a/packages/rocketchat-livestream/server/routes.js +++ b/packages/rocketchat-livestream/server/routes.js @@ -1,5 +1,5 @@ import google from 'googleapis'; -const OAuth2 = google.auth.OAuth2; +const { OAuth2 } = google.auth; RocketChat.API.v1.addRoute('livestream/oauth', { get: function functionName() { diff --git a/packages/rocketchat-logger/client/logger.js b/packages/rocketchat-logger/client/logger.js index 7ee726bab75..52aae560559 100644 --- a/packages/rocketchat-logger/client/logger.js +++ b/packages/rocketchat-logger/client/logger.js @@ -1,6 +1,6 @@ import _ from 'underscore'; -const Template = Package.templating.Template; +const { Template } = Package.templating; Template.log = false; @@ -24,14 +24,14 @@ const wrapHelpersAndEvents = function(original, prefix, color) { const template = this; const fn1 = function(name, fn) { if (fn instanceof Function) { - return dict[name] = function() { + return dict[name] = function(...args) { - const result = fn.apply(this, arguments); + const result = fn.apply(this, args); if (Template.log === true) { const completeName = `${ prefix }:${ template.viewName.replace('Template.', '') }.${ name }`; if (Template.logMatch.test(completeName)) { console.log(`%c${ completeName }`, `color: ${ color }`, { - args: arguments, + args, scope: this, result, }); @@ -56,13 +56,13 @@ const wrapLifeCycle = function(original, prefix, color) { return function(fn) { const template = this; if (fn instanceof Function) { - const wrap = function() { - const result = fn.apply(this, arguments); + const wrap = function(...args) { + const result = fn.apply(this, args); if (Template.log === true) { const completeName = `${ prefix }:${ template.viewName.replace('Template.', '') }.${ name }`; if (Template.logMatch.test(completeName)) { console.log(`%c${ completeName }`, `color: ${ color }; font-weight: bold`, { - args: arguments, + args, scope: this, result, }); diff --git a/packages/rocketchat-logger/server/server.js b/packages/rocketchat-logger/server/server.js index 870dd96f70c..dc519f8d097 100644 --- a/packages/rocketchat-logger/server/server.js +++ b/packages/rocketchat-logger/server/server.js @@ -256,9 +256,9 @@ class _Logger { return lines; } - _log(options) { + _log(options, ...args) { if (LoggerManager.enabled === false) { - LoggerManager.addToQueue(this, arguments); + LoggerManager.addToQueue(this, [options, ...args]); return; } if (options.level == null) { @@ -327,7 +327,7 @@ SystemLogger = new Logger('System', { // eslint-disable-line no-undef const StdOut = new class extends EventEmitter { constructor() { super(); - const write = process.stdout.write; + const { write } = process.stdout; this.queue = []; process.stdout.write = (...args) => { write.apply(process.stdout, args); diff --git a/packages/rocketchat-markdown/parser/original/code.js b/packages/rocketchat-markdown/parser/original/code.js index d1c7368d6ea..a208ac561ed 100644 --- a/packages/rocketchat-markdown/parser/original/code.js +++ b/packages/rocketchat-markdown/parser/original/code.js @@ -45,12 +45,8 @@ const codeblocks = (message) => { // Process highlight if this part is code const singleLine = codeMatch[0].indexOf('\n') === -1; const lang = !singleLine && Array.from(hljs.listLanguages()).includes(s.trim(codeMatch[1])) ? s.trim(codeMatch[1]) : ''; - const code = - singleLine ? - s.unescapeHTML(codeMatch[1]) : - lang === '' ? - s.unescapeHTML(codeMatch[1] + codeMatch[2]) : - s.unescapeHTML(codeMatch[2]); + const emptyLanguage = lang === '' ? s.unescapeHTML(codeMatch[1] + codeMatch[2]) : s.unescapeHTML(codeMatch[2]); + const code = singleLine ? s.unescapeHTML(codeMatch[1]) : emptyLanguage; const result = lang === '' ? hljs.highlightAuto((lang + code)) : hljs.highlight(lang, code); const token = `=!=${ Random.id() }=!=`; diff --git a/packages/rocketchat-mentions/server/server.js b/packages/rocketchat-mentions/server/server.js index 8faddd3c501..ea491b61970 100644 --- a/packages/rocketchat-mentions/server/server.js +++ b/packages/rocketchat-mentions/server/server.js @@ -10,7 +10,7 @@ const mention = new MentionsServer({ getChannels: (channels) => RocketChat.models.Rooms.find({ name: { $in: _.unique(channels) }, t: 'c' }, { fields: { _id: 1, name: 1 } }).fetch(), onMaxRoomMembersExceeded({ sender, rid }) { // Get the language of the user for the error notification. - const language = this.getUser(sender._id).language; + const { language } = this.getUser(sender._id); const msg = TAPi18n.__('Group_mentions_disabled_x_members', { total: this.messageMaxAll }, language); RocketChat.Notifications.notifyUser(sender._id, 'message', { diff --git a/packages/rocketchat-migrations/migrations.js b/packages/rocketchat-migrations/migrations.js index c0e283a74c6..068f0d08610 100644 --- a/packages/rocketchat-migrations/migrations.js +++ b/packages/rocketchat-migrations/migrations.js @@ -168,8 +168,7 @@ Migrations.migrateTo = function(command) { subcommand = command.split(',')[1]; } - const maxAttempts = Migrations.options.maxAttempts; - const retryInterval = Migrations.options.retryInterval; + const { maxAttempts, retryInterval } = Migrations.options; let migrated; for (let attempts = 1; attempts <= maxAttempts; attempts++) { if (version === 'latest') { diff --git a/packages/rocketchat-nrr/nrr.js b/packages/rocketchat-nrr/nrr.js index f489f2da314..284beafc725 100644 --- a/packages/rocketchat-nrr/nrr.js +++ b/packages/rocketchat-nrr/nrr.js @@ -30,9 +30,9 @@ Blaze.toHTMLWithDataNonReactive = function(content, data) { return Tracker.nonreactive(() => Blaze.toHTMLWithData(content, data)); }; -Blaze.registerHelper('nrrargs', function() { +Blaze.registerHelper('nrrargs', function(...args) { return { - _arguments: arguments, + _arguments: args, }; }); diff --git a/packages/rocketchat-oembed/server/providers.js b/packages/rocketchat-oembed/server/providers.js index cf17a481992..0bc7dd192ce 100644 --- a/packages/rocketchat-oembed/server/providers.js +++ b/packages/rocketchat-oembed/server/providers.js @@ -95,7 +95,7 @@ RocketChat.callbacks.add('oembed:afterParseContent', function(data) { queryString = QueryString.parse(data.parsedUrl.query); } if (queryString.url != null) { - const url = queryString.url; + const { url } = queryString; const provider = providers.getProviderForUrl(url); if (provider != null) { if (data.content && data.content.body) { diff --git a/packages/rocketchat-push-notifications/client/views/pushNotificationsFlexTab.js b/packages/rocketchat-push-notifications/client/views/pushNotificationsFlexTab.js index 824e8210d57..d27db69d362 100644 --- a/packages/rocketchat-push-notifications/client/views/pushNotificationsFlexTab.js +++ b/packages/rocketchat-push-notifications/client/views/pushNotificationsFlexTab.js @@ -158,7 +158,9 @@ Template.pushNotificationsFlexTab.onCreated(function() { } let value = this.form[field].get(); - value = typeof value === 'boolean' ? value ? '1' : '0' : value; + if (typeof value === 'boolean') { + value = value ? '1' : '0'; + } const rid = Session.get('openedRoom'); switch (field) { case 'desktopNotificationDuration': @@ -221,7 +223,7 @@ Template.pushNotificationsFlexTab.events({ switch (key) { case 'audioNotificationValue': - const audioAssets = RocketChat.CustomSounds && RocketChat.CustomSounds.getList && RocketChat.CustomSounds.getList() || []; + const audioAssets = (RocketChat.CustomSounds && RocketChat.CustomSounds.getList && RocketChat.CustomSounds.getList()) || []; const audioAssetsArray = audioAssets.map((audio) => ({ id: `audioNotificationValue${ audio.name }`, name: 'audioNotificationValue', diff --git a/packages/rocketchat-sandstorm/server/lib.js b/packages/rocketchat-sandstorm/server/lib.js index 3c274fbedfe..9591fd0df0e 100644 --- a/packages/rocketchat-sandstorm/server/lib.js +++ b/packages/rocketchat-sandstorm/server/lib.js @@ -6,7 +6,7 @@ RocketChat.Sandstorm = {}; if (process.env.SANDSTORM === '1') { const Capnp = require('capnp'); - const SandstormHttpBridge = Capnp.importSystem('sandstorm/sandstorm-http-bridge.capnp').SandstormHttpBridge; + const { SandstormHttpBridge } = Capnp.importSystem('sandstorm/sandstorm-http-bridge.capnp'); let capnpConnection = null; let httpBridge = null; diff --git a/packages/rocketchat-sandstorm/server/powerbox.js b/packages/rocketchat-sandstorm/server/powerbox.js index 9f47bb47cc1..16aa28a346c 100644 --- a/packages/rocketchat-sandstorm/server/powerbox.js +++ b/packages/rocketchat-sandstorm/server/powerbox.js @@ -10,8 +10,8 @@ if (process.env.SANDSTORM === '1') { RocketChat.Sandstorm.offerUiView = function(token, serializedDescriptor, sessionId) { const httpBridge = getHttpBridge(); const session = httpBridge.getSessionContext(sessionId).context; - const api = httpBridge.getSandstormApi(sessionId).api; - const cap = waitPromise(api.restore(new Buffer(token, 'base64'))).cap; + const { api } = httpBridge.getSandstormApi(sessionId); + const { cap } = waitPromise(api.restore(new Buffer(token, 'base64'))); return waitPromise(session.offer(cap, undefined, { tags: [{ id: '15831515641881813735', value: new Buffer(serializedDescriptor, 'base64'), @@ -26,10 +26,10 @@ if (process.env.SANDSTORM === '1') { const httpBridge = getHttpBridge(); const session = httpBridge.getSessionContext(sessionId).context; const cap = waitPromise(session.claimRequest(token)).cap.castAs(Grain.UiView); - const api = httpBridge.getSandstormApi(sessionId).api; + const { api } = httpBridge.getSandstormApi(sessionId); const newToken = waitPromise(api.save(cap)).token.toString('base64'); const viewInfo = waitPromise(cap.getViewInfo()); - const appTitle = viewInfo.appTitle; + const { appTitle } = viewInfo; const asset = waitPromise(viewInfo.grainIcon.getUrl()); const appIconUrl = `${ asset.protocol }://${ asset.hostPath }`; return { diff --git a/packages/rocketchat-search/client/search/search.js b/packages/rocketchat-search/client/search/search.js index f4647c57617..de1c8300c91 100644 --- a/packages/rocketchat-search/client/search/search.js +++ b/packages/rocketchat-search/client/search/search.js @@ -115,7 +115,7 @@ Template.RocketSearch.events = { return evt.preventDefault(); } - const value = evt.target.value; + const { value } = evt.target; if (evt.keyCode === 40 || evt.keyCode === 38) { return evt.preventDefault(); diff --git a/packages/rocketchat-search/server/index.js b/packages/rocketchat-search/server/index.js index 6df25facaab..2557161112e 100644 --- a/packages/rocketchat-search/server/index.js +++ b/packages/rocketchat-search/server/index.js @@ -1,11 +1,10 @@ -import './model/provider'; +import SearchProvider from './model/provider'; import './service/providerService.js'; import './service/validationService.js'; import './events/events.js'; import './provider/defaultProvider.js'; import { searchProviderService } from './service/providerService'; -import SearchProvider from './model/provider'; export { searchProviderService, diff --git a/packages/rocketchat-search/server/service/providerService.js b/packages/rocketchat-search/server/service/providerService.js index 1b7467da39e..701d34961b5 100644 --- a/packages/rocketchat-search/server/service/providerService.js +++ b/packages/rocketchat-search/server/service/providerService.js @@ -75,7 +75,7 @@ class SearchProviderService { start() { SearchLogger.debug('Load data for all providers'); - const providers = this.providers; + const { providers } = this; // add settings for admininistration RocketChat.settings.addGroup('Search', function() { diff --git a/packages/rocketchat-setup-wizard/client/setupWizard.js b/packages/rocketchat-setup-wizard/client/setupWizard.js index b236305ee63..33119a940ce 100644 --- a/packages/rocketchat-setup-wizard/client/setupWizard.js +++ b/packages/rocketchat-setup-wizard/client/setupWizard.js @@ -93,7 +93,7 @@ Template.setupWizard.onCreated(function() { } const jsonString = localStorage.getItem('wizard'); - const state = jsonString && JSON.parse(jsonString) || {}; + const state = (jsonString && JSON.parse(jsonString)) || {}; Object.entries(state).forEach((entry) => this.state.set(...entry)); this.autorun((c) => { diff --git a/packages/rocketchat-slackbridge/server/RocketAdapter.js b/packages/rocketchat-slackbridge/server/RocketAdapter.js index 8c3eab7e504..7f71c82a908 100644 --- a/packages/rocketchat-slackbridge/server/RocketAdapter.js +++ b/packages/rocketchat-slackbridge/server/RocketAdapter.js @@ -256,7 +256,7 @@ export default class RocketAdapter { if (slackResults && slackResults.data && slackResults.data.ok === true && slackResults.data.user) { const rocketUserData = slackResults.data.user; const isBot = rocketUserData.is_bot === true; - const email = rocketUserData.profile && rocketUserData.profile.email || ''; + const email = (rocketUserData.profile && rocketUserData.profile.email) || ''; let existingRocketUser; if (!isBot) { existingRocketUser = RocketChat.models.Users.findOneByEmailAddress(email) || RocketChat.models.Users.findOneByUsername(rocketUserData.name); diff --git a/packages/rocketchat-slackbridge/server/SlackAdapter.js b/packages/rocketchat-slackbridge/server/SlackAdapter.js index 5846fdd3654..87cb1c2974a 100644 --- a/packages/rocketchat-slackbridge/server/SlackAdapter.js +++ b/packages/rocketchat-slackbridge/server/SlackAdapter.js @@ -25,7 +25,7 @@ export default class SlackAdapter { connect(apiToken) { this.apiToken = apiToken; - const RTMClient = this.slackClient.RTMClient; + const { RTMClient } = this.slackClient; if (RTMClient != null) { RTMClient.disconnect; } diff --git a/packages/rocketchat-slashcommands-help/server.js b/packages/rocketchat-slashcommands-help/server.js index b279ce279aa..7c0ed451595 100644 --- a/packages/rocketchat-slashcommands-help/server.js +++ b/packages/rocketchat-slashcommands-help/server.js @@ -29,7 +29,7 @@ RocketChat.slashCommands.add('help', function Help(command, params, item) { New_line_message_compose_input: 'Shift + Enter', }, ]; - keys.map((key) => { + keys.forEach((key) => { RocketChat.Notifications.notifyUser(Meteor.userId(), 'message', { _id: Random.id(), rid: item.rid, diff --git a/packages/rocketchat-slashcommands-topic/topic.js b/packages/rocketchat-slashcommands-topic/topic.js index 2dd849d0b28..f68870d06a1 100644 --- a/packages/rocketchat-slashcommands-topic/topic.js +++ b/packages/rocketchat-slashcommands-topic/topic.js @@ -5,7 +5,7 @@ function Topic(command, params, item) { if (command === 'topic') { - if (Meteor.isClient && RocketChat.authz.hasAtLeastOnePermission('edit-room', item.rid) || (Meteor.isServer && RocketChat.authz.hasPermission(Meteor.userId(), 'edit-room', item.rid))) { + if ((Meteor.isClient && RocketChat.authz.hasAtLeastOnePermission('edit-room', item.rid)) || (Meteor.isServer && RocketChat.authz.hasPermission(Meteor.userId(), 'edit-room', item.rid))) { Meteor.call('saveRoomSettings', item.rid, 'roomTopic', params, (err) => { if (err) { if (Meteor.isClient) { diff --git a/packages/rocketchat-theme/server/server.js b/packages/rocketchat-theme/server/server.js index f98eab74abc..61325fcf3f9 100644 --- a/packages/rocketchat-theme/server/server.js +++ b/packages/rocketchat-theme/server/server.js @@ -28,7 +28,7 @@ WebApp.rawConnectHandlers.use(function(req, res, next) { } }); -const calculateClientHash = WebAppHashing.calculateClientHash; +const { calculateClientHash } = WebAppHashing; WebAppHashing.calculateClientHash = function(manifest, includeFilter, runtimeConfigOverride) { const css = RocketChat.theme.getCss(); diff --git a/packages/rocketchat-tooltip/client/rocketchat-tooltip.js b/packages/rocketchat-tooltip/client/rocketchat-tooltip.js index aa55090e1ee..eea7f3f6689 100644 --- a/packages/rocketchat-tooltip/client/rocketchat-tooltip.js +++ b/packages/rocketchat-tooltip/client/rocketchat-tooltip.js @@ -55,7 +55,7 @@ RocketChat.tooltip = { const tip = $('.tooltip'); let top = sourcePos.top - tip.outerHeight() - 5; - let left = sourcePos.left; + let { left } = sourcePos; left = left + (sourceWidth / 2) - (tip.outerWidth() / 2); diff --git a/packages/rocketchat-ui-account/client/accountPreferences.js b/packages/rocketchat-ui-account/client/accountPreferences.js index da74a9b2ba5..cf7a8cdddb8 100644 --- a/packages/rocketchat-ui-account/client/accountPreferences.js +++ b/packages/rocketchat-ui-account/client/accountPreferences.js @@ -316,7 +316,7 @@ Template.accountPreferences.events({ 'click .js-dont-ask-remove'(e) { e.preventDefault(); const selectEl = document.getElementById('dont-ask'); - const options = selectEl.options; + const { options } = selectEl; const selectedOption = selectEl.value; const optionIndex = Array.from(options).findIndex((option) => option.value === selectedOption); diff --git a/packages/rocketchat-ui-account/client/accountProfile.js b/packages/rocketchat-ui-account/client/accountProfile.js index aeed0cf9b36..cc8b489373d 100644 --- a/packages/rocketchat-ui-account/client/accountProfile.js +++ b/packages/rocketchat-ui-account/client/accountProfile.js @@ -342,7 +342,7 @@ Template.accountProfile.events({ 'input [name=email]'(e, instance) { const input = e.target; const position = input.selectionEnd || input.selectionStart; - const length = input.value.length; + const { length } = input.value; const modified = filterEmail(input.value); input.value = modified; document.activeElement === input && e && /input/i.test(e.type) && (input.selectionEnd = position + input.value.length - length); @@ -351,7 +351,7 @@ Template.accountProfile.events({ 'input [name=username]'(e, instance) { const input = e.target; const position = input.selectionEnd || input.selectionStart; - const length = input.value.length; + const { length } = input.value; const modified = filterNames(input.value); input.value = modified; document.activeElement === input && e && /input/i.test(e.type) && (input.selectionEnd = position + input.value.length - length); @@ -499,7 +499,7 @@ Template.accountProfile.events({ }, 'change .js-select-avatar-upload [type=file]'(event, template) { const e = event.originalEvent || event; - let files = e.target.files; + let { files } = e.target; if (!files || files.length === 0) { files = (e.dataTransfer && e.dataTransfer.files) || []; } diff --git a/packages/rocketchat-ui-account/client/avatar/avatar.js b/packages/rocketchat-ui-account/client/avatar/avatar.js index 7fd9baff00a..51f8c69b30d 100644 --- a/packages/rocketchat-ui-account/client/avatar/avatar.js +++ b/packages/rocketchat-ui-account/client/avatar/avatar.js @@ -2,7 +2,7 @@ Template.avatar.helpers({ src() { let { url } = Template.instance().data; if (!url) { - let username = this.username; + let { username } = this; if (username == null && this.userId != null) { const user = Meteor.users.findOne(this.userId); username = user && user.username; diff --git a/packages/rocketchat-ui-account/client/avatar/prompt.js b/packages/rocketchat-ui-account/client/avatar/prompt.js index 0e826bb7e74..108a56bf74f 100644 --- a/packages/rocketchat-ui-account/client/avatar/prompt.js +++ b/packages/rocketchat-ui-account/client/avatar/prompt.js @@ -81,9 +81,9 @@ Template.avatarPrompt.events({ toastr.error(t('Please_enter_value_for_url')); } } else if (this.service === 'upload') { - let files = instance.find('input[type=file]').files; + let { files } = instance.find('input[type=file]'); if (!files || files.length === 0) { - files = event.dataTransfer && event.dataTransfer.files || []; + files = (event.dataTransfer && event.dataTransfer.files) || []; } for (let i = 0; i < files.length; i++) { @@ -139,7 +139,7 @@ Template.avatarPrompt.events({ }, 'change .avatar-file-input'(event, template) { const e = event.originalEvent || event; - let files = e.target.files; + let { files } = e.target; if (!files || files.length === 0) { files = (e.dataTransfer && e.dataTransfer.files) || []; } diff --git a/packages/rocketchat-ui-admin/client/admin.js b/packages/rocketchat-ui-admin/client/admin.js index 535420b22b9..e9ec12f9121 100644 --- a/packages/rocketchat-ui-admin/client/admin.js +++ b/packages/rocketchat-ui-admin/client/admin.js @@ -494,7 +494,7 @@ Template.admin.events({ }, 'change input[type=file]'(ev) { const e = ev.originalEvent || ev; - let files = e.target.files; + let { files } = e.target; if (!files || files.length === 0) { if (e.dataTransfer && e.dataTransfer.files) { files = e.dataTransfer.files; diff --git a/packages/rocketchat-ui-admin/client/adminInfo.js b/packages/rocketchat-ui-admin/client/adminInfo.js index 8e37efd3566..75b7fcfdc1a 100644 --- a/packages/rocketchat-ui-admin/client/adminInfo.js +++ b/packages/rocketchat-ui-admin/client/adminInfo.js @@ -49,7 +49,7 @@ Template.adminInfo.helpers({ return RocketChat.Info; }, build() { - return RocketChat.Info && RocketChat.Info.compile || RocketChat.Info && RocketChat.Info.build; + return RocketChat.Info && (RocketChat.Info.compile || RocketChat.Info.build); }, }); diff --git a/packages/rocketchat-ui-clean-history/client/views/cleanHistory.js b/packages/rocketchat-ui-clean-history/client/views/cleanHistory.js index 40eb7389aff..83f74d47748 100644 --- a/packages/rocketchat-ui-clean-history/client/views/cleanHistory.js +++ b/packages/rocketchat-ui-clean-history/client/views/cleanHistory.js @@ -323,7 +323,7 @@ Template.cleanHistory.events({ 'input [name="users"]'(e, t) { const input = e.target; const position = input.selectionEnd || input.selectionStart; - const length = input.value.length; + const { length } = input.value; const modified = filterNames(input.value); input.value = modified; document.activeElement === input && e && /input/i.test(e.type) && (input.selectionEnd = position + input.value.length - length); diff --git a/packages/rocketchat-ui-flextab/client/tabs/inviteUsers.js b/packages/rocketchat-ui-flextab/client/tabs/inviteUsers.js index 62919673cfb..bca76cbe4b2 100644 --- a/packages/rocketchat-ui-flextab/client/tabs/inviteUsers.js +++ b/packages/rocketchat-ui-flextab/client/tabs/inviteUsers.js @@ -81,7 +81,7 @@ Template.inviteUsers.events({ 'input [name="users"]'(e, t) { const input = e.target; const position = input.selectionEnd || input.selectionStart; - const length = input.value.length; + const { length } = input.value; const modified = filterNames(input.value); input.value = modified; document.activeElement === input && e && /input/i.test(e.type) && (input.selectionEnd = position + input.value.length - length); diff --git a/packages/rocketchat-ui-flextab/client/tabs/membersList.js b/packages/rocketchat-ui-flextab/client/tabs/membersList.js index d13a5fee733..f385395f401 100644 --- a/packages/rocketchat-ui-flextab/client/tabs/membersList.js +++ b/packages/rocketchat-ui-flextab/client/tabs/membersList.js @@ -197,7 +197,9 @@ Template.membersList.events({ user: this.user.user, hideAdminControls: RocketChat.roomTypes.roomTypes[room.t].userDetailShowAdmin(room) || false, directActions: RocketChat.roomTypes.roomTypes[room.t].userDetailShowAll(room) || false, - }).map((action) => (typeof action === 'function' ? action.call(this) : action)).filter((action) => action && (!action.condition || action.condition.call(this))); + }) + .map((action) => (typeof action === 'function' ? action.call(this) : action)) + .filter((action) => action && (!action.condition || action.condition.call(this))); const groups = []; const columns = []; const admin = _actions.filter((action) => action.group === 'admin'); diff --git a/packages/rocketchat-ui-flextab/client/tabs/uploadedFilesList.js b/packages/rocketchat-ui-flextab/client/tabs/uploadedFilesList.js index 49cdbf86f58..b7d6cdef9f1 100644 --- a/packages/rocketchat-ui-flextab/client/tabs/uploadedFilesList.js +++ b/packages/rocketchat-ui-flextab/client/tabs/uploadedFilesList.js @@ -31,7 +31,7 @@ Template.uploadedFilesList.helpers({ }, fileTypeClass() { - const [, type] = this.type && /^(.+?)\//.exec(this.type) || []; + const [, type] = (this.type && /^(.+?)\//.exec(this.type)) || []; if (type) { return `room-files-${ type }`; } diff --git a/packages/rocketchat-ui-flextab/client/tabs/userInfo.js b/packages/rocketchat-ui-flextab/client/tabs/userInfo.js index db525a4616e..a4dc8e5348c 100644 --- a/packages/rocketchat-ui-flextab/client/tabs/userInfo.js +++ b/packages/rocketchat-ui-flextab/client/tabs/userInfo.js @@ -6,7 +6,10 @@ import moment from 'moment'; import { getActions } from './userActions'; const more = function() { - return Template.instance().actions.get().map((action) => (typeof action === 'function' ? action.call(this) : action)).filter((action) => action && (!action.condition || action.condition.call(this))).slice(2); + return Template.instance().actions.get() + .map((action) => (typeof action === 'function' ? action.call(this) : action)) + .filter((action) => action && (!action.condition || action.condition.call(this))) + .slice(2); }; @@ -17,7 +20,10 @@ Template.userInfo.helpers({ moreActions: more, actions() { - return Template.instance().actions.get().map((action) => (typeof action === 'function' ? action.call(this) : action)).filter((action) => action && (!action.condition || action.condition.call(this))).slice(0, 2); + return Template.instance().actions.get() + .map((action) => (typeof action === 'function' ? action.call(this) : action)) + .filter((action) => action && (!action.condition || action.condition.call(this))) + .slice(0, 2); }, customField() { const sCustomFieldsToShow = RocketChat.settings.get('Accounts_CustomFieldsToShowInUserInfo').trim(); @@ -25,7 +31,7 @@ Template.userInfo.helpers({ if (sCustomFieldsToShow) { const user = Template.instance().user.get(); - const userCustomFields = user && user.customFields || {}; + const userCustomFields = (user && user.customFields) || {}; const listOfCustomFieldsToShow = JSON.parse(sCustomFieldsToShow); _.map(listOfCustomFieldsToShow, (el) => { diff --git a/packages/rocketchat-ui-login/client/login/form.js b/packages/rocketchat-ui-login/client/login/form.js index 846462a9edc..282d76a14e1 100644 --- a/packages/rocketchat-ui-login/client/login/form.js +++ b/packages/rocketchat-ui-login/client/login/form.js @@ -167,8 +167,8 @@ Template.loginForm.events({ $('input[name=emailOrUsername]').val(credentials.username); return $('input[name=pass]').val(credentials.password); }; - const errorCallback = function() { - return console.log('OnePassword errorCallback', arguments); + const errorCallback = function(...args) { + return console.log('OnePassword errorCallback', ...args); }; return OnePassword.findLoginForUrl(succesCallback, errorCallback, Meteor.absoluteUrl()); }, diff --git a/packages/rocketchat-ui-master/client/main.js b/packages/rocketchat-ui-master/client/main.js index fa67062213f..79bf8346795 100644 --- a/packages/rocketchat-ui-master/client/main.js +++ b/packages/rocketchat-ui-master/client/main.js @@ -51,11 +51,11 @@ Template.body.onRendered(function() { }); $(document.body).on('keydown', function(e) { - const target = e.target; + const { target } = e; if (e.ctrlKey === true || e.metaKey === true) { return; } - if (!(e.keyCode > 45 && e.keyCode < 91 || e.keyCode === 8)) { + if (!((e.keyCode > 45 && e.keyCode < 91) || e.keyCode === 8)) { return; } if (/input|textarea|select/i.test(target.tagName)) { diff --git a/packages/rocketchat-ui-message/client/message.js b/packages/rocketchat-ui-message/client/message.js index 78de66bd8da..46c34c5c475 100644 --- a/packages/rocketchat-ui-message/client/message.js +++ b/packages/rocketchat-ui-message/client/message.js @@ -82,7 +82,7 @@ Template.message.helpers({ return (RocketChat.settings.get('UI_Use_Real_Name') && this.u.name) || this.u.username; }, showUsername() { - return this.alias || RocketChat.settings.get('UI_Use_Real_Name') && this.u && this.u.name; + return this.alias || (RocketChat.settings.get('UI_Use_Real_Name') && this.u && this.u.name); }, own() { if (this.u && this.u._id === Meteor.userId()) { @@ -131,7 +131,7 @@ Template.message.helpers({ }, }); const language = RocketChat.AutoTranslate.getLanguage(this.rid); - return this.autoTranslateFetching || subscription && subscription.autoTranslate !== this.autoTranslateShowInverse && this.translations && this.translations[language]; + return this.autoTranslateFetching || (subscription && subscription.autoTranslate !== this.autoTranslateShowInverse && this.translations && this.translations[language]); } }, edited() { @@ -222,7 +222,10 @@ Template.message.helpers({ return Object.keys(this.reactions || {}).map((emoji) => { const reaction = this.reactions[emoji]; const total = reaction.usernames.length; - let usernames = reaction.usernames.slice(0, 15).map((username) => (username === userUsername ? t('You').toLowerCase() : `@${ username }`)).join(', '); + let usernames = reaction.usernames + .slice(0, 15) + .map((username) => (username === userUsername ? t('You').toLowerCase() : `@${ username }`)) + .join(', '); if (total > 15) { usernames = `${ usernames } ${ t('And_more', { length: total - 15, diff --git a/packages/rocketchat-ui-message/client/messageBox.js b/packages/rocketchat-ui-message/client/messageBox.js index 61323a19907..02a5121e194 100644 --- a/packages/rocketchat-ui-message/client/messageBox.js +++ b/packages/rocketchat-ui-message/client/messageBox.js @@ -287,7 +287,7 @@ function firefoxPasteUpload(fn) { if (!user || user[1] > 49) { return fn; } - return function(event, instance) { + return function(event, instance, ...args) { if ((event.originalEvent.ctrlKey || event.originalEvent.metaKey) && (event.keyCode === 86)) { const textarea = instance.find('textarea'); const { selectionStart, selectionEnd } = textarea; @@ -328,7 +328,7 @@ function firefoxPasteUpload(fn) { } }, 150); } - return fn && fn.apply(this, arguments); + return fn && fn.apply(this, [event, instance, ...args]); }; } @@ -403,15 +403,15 @@ Template.messageBox.events({ return; } const items = [...e.originalEvent.clipboardData.items]; - const files = items.map((item) => { - if (item.kind === 'file' && item.type.indexOf('image/') !== -1) { + const files = items + .filter((item) => (item.kind === 'file' && item.type.indexOf('image/') !== -1)) + .map((item) => { e.preventDefault(); return { file: item.getAsFile(), name: `Clipboard - ${ moment().format(RocketChat.settings.get('Message_TimeAndDateFormat')) }`, }; - } - }).filter((e) => e); + }); if (files.length) { return fileUpload(files); } else { diff --git a/packages/rocketchat-ui-message/client/popup/messagePopup.js b/packages/rocketchat-ui-message/client/popup/messagePopup.js index 9c3d2e943e9..0381e2c9343 100644 --- a/packages/rocketchat-ui-message/client/popup/messagePopup.js +++ b/packages/rocketchat-ui-message/client/popup/messagePopup.js @@ -198,7 +198,7 @@ Template.messagePopup.onCreated(function() { if (template.value.curValue == null) { return; } - const value = template.input.value; + const { value } = template.input; const caret = getCursorPosition(template.input); let firstPartValue = value.substr(0, caret); const lastPartValue = value.substr(caret); diff --git a/packages/rocketchat-ui-message/client/popup/messagePopupEmoji.js b/packages/rocketchat-ui-message/client/popup/messagePopupEmoji.js index 8a2d014d993..588945bed93 100644 --- a/packages/rocketchat-ui-message/client/popup/messagePopupEmoji.js +++ b/packages/rocketchat-ui-message/client/popup/messagePopupEmoji.js @@ -1,6 +1,6 @@ Template.messagePopupEmoji.helpers({ value() { - const length = this.data.length; + const { length } = this.data; return this.data[length - 1]; }, }); diff --git a/packages/rocketchat-ui-message/startup/messageBoxActions.js b/packages/rocketchat-ui-message/startup/messageBoxActions.js index 9b1a6ff01c2..2ae027e42a9 100644 --- a/packages/rocketchat-ui-message/startup/messageBoxActions.js +++ b/packages/rocketchat-ui-message/startup/messageBoxActions.js @@ -58,8 +58,7 @@ RocketChat.messageBox.actions.add('Share', 'My_location', { condition: () => RocketChat.Geolocation.get() !== false, action({ rid }) { const position = RocketChat.Geolocation.get(); - const latitude = position.coords.latitude; - const longitude = position.coords.longitude; + const { latitude, longitude } = position.coords; const text = `
`; modal.open({ diff --git a/packages/rocketchat-ui-sidenav/client/chatRoomItem.js b/packages/rocketchat-ui-sidenav/client/chatRoomItem.js index 17f491d0b7b..c88b7903d36 100644 --- a/packages/rocketchat-ui-sidenav/client/chatRoomItem.js +++ b/packages/rocketchat-ui-sidenav/client/chatRoomItem.js @@ -40,7 +40,7 @@ Template.chatRoomItem.helpers({ if (!this.lastMessage && RocketChat.settings.get('Store_Last_Message')) { const room = RocketChat.models.Rooms.findOne(this.rid || this._id, { fields: { lastMessage: 1 } }); - roomData.lastMessage = room && room.lastMessage || { msg: t('No_messages_yet') }; + roomData.lastMessage = (room && room.lastMessage) || { msg: t('No_messages_yet') }; } return roomData; }, diff --git a/packages/rocketchat-ui-sidenav/client/roomList.js b/packages/rocketchat-ui-sidenav/client/roomList.js index 7736345e2de..96247acf644 100644 --- a/packages/rocketchat-ui-sidenav/client/roomList.js +++ b/packages/rocketchat-ui-sidenav/client/roomList.js @@ -80,7 +80,7 @@ Template.roomList.helpers({ or is unread and has one room */ - return !['unread', 'f'].includes(group.identifier) || (rooms.length || rooms.count && rooms.count()); + return !['unread', 'f'].includes(group.identifier) || (rooms.length || (rooms.count && rooms.count())); }, roomType(room) { diff --git a/packages/rocketchat-ui-sidenav/client/sidebarItem.js b/packages/rocketchat-ui-sidenav/client/sidebarItem.js index 790d26b1c7f..470e3750985 100644 --- a/packages/rocketchat-ui-sidenav/client/sidebarItem.js +++ b/packages/rocketchat-ui-sidenav/client/sidebarItem.js @@ -31,8 +31,8 @@ function timeAgo(time) { const yesterday = new Date(now.getFullYear(), now.getMonth(), now.getDate() - 1); return ( - now.getDate() === time.getDate() && moment(time).format('LT') || - yesterday.getDate() === time.getDate() && t('yesterday') || + (now.getDate() === time.getDate() && moment(time).format('LT')) || + (yesterday.getDate() === time.getDate() && t('yesterday')) || moment(time).format('L') ); } diff --git a/packages/rocketchat-ui/client/components/header/header.js b/packages/rocketchat-ui/client/components/header/header.js index c5df84018ba..6f0e5cbb08b 100644 --- a/packages/rocketchat-ui/client/components/header/header.js +++ b/packages/rocketchat-ui/client/components/header/header.js @@ -134,5 +134,5 @@ Template.header.events({ }); Template.header.onCreated(function() { - this.currentChannel = this.data && this.data._id && RocketChat.models.Rooms.findOne(this.data._id) || undefined; + this.currentChannel = (this.data && this.data._id && RocketChat.models.Rooms.findOne(this.data._id)) || undefined; }); diff --git a/packages/rocketchat-ui/client/components/tabs.js b/packages/rocketchat-ui/client/components/tabs.js index 2d04aaff673..7353f990c5f 100644 --- a/packages/rocketchat-ui/client/components/tabs.js +++ b/packages/rocketchat-ui/client/components/tabs.js @@ -4,7 +4,7 @@ Template.tabs.onCreated(function() { Template.tabs.events({ 'click .tab'(e) { - const value = e.currentTarget.dataset.value; + const { value } = e.currentTarget.dataset; Template.instance().activeTab.set(value); Template.instance().data.tabs.onChange(value); }, diff --git a/packages/rocketchat-ui/client/lib/RoomManager.js b/packages/rocketchat-ui/client/lib/RoomManager.js index 9241a1ae33d..82904ec43bb 100644 --- a/packages/rocketchat-ui/client/lib/RoomManager.js +++ b/packages/rocketchat-ui/client/lib/RoomManager.js @@ -265,7 +265,7 @@ Meteor.startup(() => { if ((currentUsername === undefined) && ((user != null ? user.username : undefined) != null)) { currentUsername = user.username; RoomManager.closeAllRooms(); - const roomTypes = RocketChat.roomTypes.roomTypes; + const { roomTypes } = RocketChat.roomTypes; // Reload only if the current route is a channel route const roomType = Object.keys(roomTypes).find((key) => roomTypes[key].route && roomTypes[key].route.name === FlowRouter.current().route.name); if (roomType) { diff --git a/packages/rocketchat-ui/client/lib/chatMessages.js b/packages/rocketchat-ui/client/lib/chatMessages.js index b6ab885722a..b930bfd0813 100644 --- a/packages/rocketchat-ui/client/lib/chatMessages.js +++ b/packages/rocketchat-ui/client/lib/chatMessages.js @@ -473,7 +473,7 @@ this.ChatMessages = class ChatMessages { const k = event.which; if (k === 13) { - if (sendOnEnter == null || sendOnEnter === 'normal' || sendOnEnter === 'desktop' && Meteor.Device.isDesktop()) { + if ((sendOnEnter == null || sendOnEnter === 'normal' || sendOnEnter === 'desktop') && Meteor.Device.isDesktop()) { if (!event.shiftKey && !event.ctrlKey && !event.altKey && !event.metaKey) { // Enter without shift/ctrl/alt event.preventDefault(); event.stopPropagation(); diff --git a/packages/rocketchat-ui/client/lib/iframeCommands.js b/packages/rocketchat-ui/client/lib/iframeCommands.js index 214b0d96c84..0d59f0e1b7a 100644 --- a/packages/rocketchat-ui/client/lib/iframeCommands.js +++ b/packages/rocketchat-ui/client/lib/iframeCommands.js @@ -37,10 +37,10 @@ const commands = { } }, - 'login-with-token'(data) { + 'login-with-token'(data, ...args) { if (typeof data.token === 'string') { Meteor.loginWithToken(data.token, function() { - console.log('Iframe command [login-with-token]: result', arguments); + console.log('Iframe command [login-with-token]: result', [data, ...args]); }); } }, diff --git a/packages/rocketchat-ui/client/lib/tapi18n.js b/packages/rocketchat-ui/client/lib/tapi18n.js index 4ea779af816..a470bb99262 100644 --- a/packages/rocketchat-ui/client/lib/tapi18n.js +++ b/packages/rocketchat-ui/client/lib/tapi18n.js @@ -23,6 +23,6 @@ this.tr = function(key, options, ...replaces) { }; this.isRtl = (lang) => { - const language = lang ? lang : localStorage.getItem('userLanguage') ? localStorage.getItem('userLanguage') : 'en-US'; + const language = lang || localStorage.getItem('userLanguage') || 'en-US'; return ['ar', 'dv', 'fa', 'he', 'ku', 'ps', 'sd', 'ug', 'ur', 'yi'].includes(language.split('-').shift().toLowerCase()); }; diff --git a/packages/rocketchat-ui/client/views/app/alerts.js b/packages/rocketchat-ui/client/views/app/alerts.js index c6be98fb113..679b5f06567 100644 --- a/packages/rocketchat-ui/client/views/app/alerts.js +++ b/packages/rocketchat-ui/client/views/app/alerts.js @@ -23,7 +23,7 @@ this.alerts = { Blaze.remove(this.renderedAlert); - const activeElement = this.renderedAlert.dataVar.curValue.activeElement; + const { activeElement } = this.renderedAlert.dataVar.curValue; if (activeElement) { $(activeElement).removeClass('active'); } diff --git a/packages/rocketchat-ui/client/views/app/createChannel.js b/packages/rocketchat-ui/client/views/app/createChannel.js index 4cd569f61c1..7c9b55c15a9 100644 --- a/packages/rocketchat-ui/client/views/app/createChannel.js +++ b/packages/rocketchat-ui/client/views/app/createChannel.js @@ -172,7 +172,7 @@ Template.createChannel.events({ 'input [name="users"]'(e, t) { const input = e.target; const position = input.selectionEnd || input.selectionStart; - const length = input.value.length; + const { length } = input.value; const modified = filterNames(input.value); input.value = modified; document.activeElement === input && e && /input/i.test(e.type) && (input.selectionEnd = position + input.value.length - length); @@ -182,7 +182,7 @@ Template.createChannel.events({ 'input [name="name"]'(e, t) { const input = e.target; const position = input.selectionEnd || input.selectionStart; - const length = input.value.length; + const { length } = input.value; const modified = filterNames(input.value); input.value = modified; diff --git a/packages/rocketchat-ui/client/views/app/directory.js b/packages/rocketchat-ui/client/views/app/directory.js index 37863811683..a5a4b491a32 100644 --- a/packages/rocketchat-ui/client/views/app/directory.js +++ b/packages/rocketchat-ui/client/views/app/directory.js @@ -23,6 +23,7 @@ function directorySearch(config, cb) { createdAt: timeAgo(result.createdAt), }; } + return null; })); }); } diff --git a/packages/rocketchat-ui/client/views/app/modal.js b/packages/rocketchat-ui/client/views/app/modal.js index 31165ff731a..3a6087813d0 100644 --- a/packages/rocketchat-ui/client/views/app/modal.js +++ b/packages/rocketchat-ui/client/views/app/modal.js @@ -116,7 +116,7 @@ Template.rc_modal.events({ }, 'click .js-confirm'(e, instance) { e.stopPropagation(); - const dontAskAgain = instance.data.dontAskAgain; + const { dontAskAgain } = instance.data; if (dontAskAgain && document.getElementById('dont-ask-me-again').checked) { const dontAskAgainObject = { action: dontAskAgain.action, diff --git a/packages/rocketchat-ui/client/views/app/popover.js b/packages/rocketchat-ui/client/views/app/popover.js index bced628203f..155f8bc4110 100644 --- a/packages/rocketchat-ui/client/views/app/popover.js +++ b/packages/rocketchat-ui/client/views/app/popover.js @@ -20,7 +20,7 @@ this.popover = { Blaze.remove(this.renderedPopover); - const activeElement = this.renderedPopover.dataVar.curValue.activeElement; + const { activeElement } = this.renderedPopover.dataVar.curValue; if (activeElement) { $(activeElement).removeClass('active'); } @@ -44,14 +44,16 @@ Template.popover.onRendered(function() { } }); const { offsetVertical = 0, offsetHorizontal = 0 } = this.data; - const activeElement = this.data.activeElement; + const { activeElement } = this.data; const popoverContent = this.firstNode.children[0]; const position = _.throttle(() => { const direction = typeof this.data.direction === 'function' ? this.data.direction() : this.data.direction; const verticalDirection = /top/.test(direction) ? 'top' : 'bottom'; - const horizontalDirection = /left/.test(direction) ? 'left' : /right/.test(direction) ? 'right' : isRtl() ^ /inverted/.test(direction) ? 'left' : 'right'; + const rtlDirection = isRtl() ^ /inverted/.test(direction) ? 'left' : 'right'; + const rightDirection = /right/.test(direction) ? 'right' : rtlDirection; + const horizontalDirection = /left/.test(direction) ? 'left' : rightDirection; const position = typeof this.data.position === 'function' ? this.data.position() : this.data.position; const customCSSProperties = typeof this.data.customCSSProperties === 'function' ? this.data.customCSSProperties() : this.data.customCSSProperties; @@ -147,7 +149,7 @@ Template.popover.events({ popover.close(); }, 'click [data-type="messagebox-action"]'(event, t) { - const id = event.currentTarget.dataset.id; + const { id } = event.currentTarget.dataset; const action = RocketChat.messageBox.actions.getById(id); if ((action[0] != null ? action[0].action : undefined) != null) { action[0].action({ rid: t.data.data.rid, messageBox: document.querySelector('.rc-message-box'), element: event.currentTarget, event }); diff --git a/packages/rocketchat-ui/client/views/app/room.js b/packages/rocketchat-ui/client/views/app/room.js index b4b783decd1..0da60cca1d0 100644 --- a/packages/rocketchat-ui/client/views/app/room.js +++ b/packages/rocketchat-ui/client/views/app/room.js @@ -503,7 +503,7 @@ Template.room.events({ }, 'touchstart .message'(e, t) { - const touches = e.originalEvent.touches; + const { touches } = e.originalEvent; if (touches && touches.length) { lastTouchX = touches[0].pageX; lastTouchY = touches[0].pagey; @@ -568,7 +568,7 @@ Template.room.events({ }, 'touchmove .message'(e, t) { - const touches = e.originalEvent.touches; + const { touches } = e.originalEvent; if (touches && touches.length) { const deltaX = Math.abs(lastTouchX - touches[0].pageX); const deltaY = Math.abs(lastTouchY - touches[0].pageY); @@ -635,7 +635,7 @@ Template.room.events({ return; } - const username = this._arguments[1].u.username; + const { username } = this._arguments[1].u; openProfileTabOrOpenDM(e, instance, username); }, @@ -654,7 +654,7 @@ Template.room.events({ } lastScrollTop = e.target.scrollTop; - if (RoomHistoryManager.isLoading(this._id) === false && RoomHistoryManager.hasMore(this._id) === true || RoomHistoryManager.hasMoreNext(this._id) === true) { + if ((RoomHistoryManager.isLoading(this._id) === false && RoomHistoryManager.hasMore(this._id) === true) || RoomHistoryManager.hasMoreNext(this._id) === true) { if (RoomHistoryManager.hasMore(this._id) === true && e.target.scrollTop === 0) { RoomHistoryManager.getMore(this._id); } else if (RoomHistoryManager.hasMoreNext(this._id) === true && e.target.scrollTop >= e.target.scrollHeight - e.target.clientHeight) { @@ -931,7 +931,7 @@ Template.room.onCreated(function() { handleError(error); } - return Array.from(results).map((record) => { + return Array.from(results).forEach((record) => { delete record._id; RoomRoles.upsert({ rid: record.rid, 'u._id': record.u._id }, record); }); diff --git a/packages/rocketchat-user-data-download/server/cronProcessDownloads.js b/packages/rocketchat-user-data-download/server/cronProcessDownloads.js index e4678ebc776..5b01120b4da 100644 --- a/packages/rocketchat-user-data-download/server/cronProcessDownloads.js +++ b/packages/rocketchat-user-data-download/server/cronProcessDownloads.js @@ -349,9 +349,9 @@ const uploadZipFile = function(exportOperation, callback) { const stream = fs.createReadStream(filePath); const contentType = 'application/zip'; - const size = stat.size; + const { size } = stat; - const userId = exportOperation.userId; + const { userId } = exportOperation; const user = RocketChat.models.Users.findOneById(userId); const userDisplayName = user ? user.name : userId; const utcDate = new Date().toISOString().split('T')[0]; diff --git a/packages/rocketchat-version-check/server/functions/getNewUpdates.js b/packages/rocketchat-version-check/server/functions/getNewUpdates.js index 503567903cf..3d9ebdf0a33 100644 --- a/packages/rocketchat-version-check/server/functions/getNewUpdates.js +++ b/packages/rocketchat-version-check/server/functions/getNewUpdates.js @@ -6,7 +6,7 @@ import { HTTP } from 'meteor/http'; export default () => { try { const uniqueID = RocketChat.models.Settings.findOne('uniqueID'); - const _oplogHandle = MongoInternals.defaultRemoteCollectionDriver().mongo._oplogHandle; + const { _oplogHandle } = MongoInternals.defaultRemoteCollectionDriver().mongo; const oplogEnabled = _oplogHandle && _oplogHandle.onOplogEntry && RocketChat.settings.get('Force_Disable_OpLog_For_Cache') !== true; const data = { diff --git a/packages/rocketchat-webrtc/client/WebRTCClass.js b/packages/rocketchat-webrtc/client/WebRTCClass.js index efd484ed539..ca893919998 100644 --- a/packages/rocketchat-webrtc/client/WebRTCClass.js +++ b/packages/rocketchat-webrtc/client/WebRTCClass.js @@ -5,7 +5,7 @@ class WebRTCTransportClass { this.webrtcInstance = webrtcInstance; this.callbacks = {}; RocketChat.Notifications.onRoom(this.webrtcInstance.room, 'webrtc', (type, data) => { - const onRemoteStatus = this.callbacks.onRemoteStatus; + const { onRemoteStatus } = this.callbacks; this.log('WebRTCTransportClass - onRoom', type, data); switch (type) { case 'status': @@ -16,9 +16,9 @@ class WebRTCTransportClass { }); } - log() { + log(...args) { if (this.debug === true) { - console.log.apply(console, arguments); + console.log.apply(console, args); } } @@ -27,10 +27,7 @@ class WebRTCTransportClass { return; } this.log('WebRTCTransportClass - onUser', type, data); - const onRemoteCall = this.callbacks.onRemoteCall; - const onRemoteJoin = this.callbacks.onRemoteJoin; - const onRemoteCandidate = this.callbacks.onRemoteCandidate; - const onRemoteDescription = this.callbacks.onRemoteDescription; + const { onRemoteCall, onRemoteJoin, onRemoteCandidate, onRemoteDescription } = this.callbacks; switch (type) { case 'call': @@ -105,7 +102,7 @@ class WebRTCTransportClass { } onRemoteCall(fn) { - const callbacks = this.callbacks; + const { callbacks } = this; if (callbacks.onRemoteCall == null) { callbacks.onRemoteCall = []; } @@ -113,7 +110,7 @@ class WebRTCTransportClass { } onRemoteJoin(fn) { - const callbacks = this.callbacks; + const { callbacks } = this; if (callbacks.onRemoteJoin == null) { callbacks.onRemoteJoin = []; } @@ -121,7 +118,7 @@ class WebRTCTransportClass { } onRemoteCandidate(fn) { - const callbacks = this.callbacks; + const { callbacks } = this; if (callbacks.onRemoteCandidate == null) { callbacks.onRemoteCandidate = []; } @@ -129,7 +126,7 @@ class WebRTCTransportClass { } onRemoteDescription(fn) { - const callbacks = this.callbacks; + const { callbacks } = this; if (callbacks.onRemoteDescription == null) { callbacks.onRemoteDescription = []; } @@ -137,7 +134,7 @@ class WebRTCTransportClass { } onRemoteStatus(fn) { - const callbacks = this.callbacks; + const { callbacks } = this; if (callbacks.onRemoteStatus == null) { callbacks.onRemoteStatus = []; } @@ -221,18 +218,18 @@ class WebRTCClass { // Meteor.setInterval(this.broadcastStatus.bind(@), 1000); } - log() { + log(...args) { if (this.debug === true) { - console.log.apply(console, arguments); + console.log.apply(console, args); } } - onError() { - console.error.apply(console, arguments); + onError(...args) { + console.error.apply(console, args); } checkPeerConnections() { - const peerConnections = this.peerConnections; + const { peerConnections } = this; Object.keys(peerConnections).forEach((id) => { const peerConnection = peerConnections[id]; if (peerConnection.iceConnectionState !== 'connected' && peerConnection.iceConnectionState !== 'completed' && peerConnection.createdAt + 5000 < Date.now()) { @@ -244,7 +241,7 @@ class WebRTCClass { updateRemoteItems() { const items = []; const itemsById = {}; - const peerConnections = this.peerConnections; + const { peerConnections } = this; Object.keys(peerConnections).forEach((id) => { const peerConnection = peerConnections[id]; @@ -290,7 +287,7 @@ class WebRTCClass { return; } const remoteConnections = []; - const peerConnections = this.peerConnections; + const { peerConnections } = this; Object.keys(peerConnections).forEach((id) => { const peerConnection = peerConnections[id]; remoteConnections.push({ @@ -520,8 +517,8 @@ class WebRTCClass { @param callback {Function} */ - getLocalUserMedia(callback) { - this.log('getLocalUserMedia', arguments); + getLocalUserMedia(callback, ...args) { + this.log('getLocalUserMedia', [callback, ...args]); if (this.localStream != null) { return callback(null, this.localStream); } @@ -530,7 +527,7 @@ class WebRTCClass { this.localUrl.set(URL.createObjectURL(stream)); this.videoEnabled.set(this.media.video === true); this.audioEnabled.set(this.media.audio === true); - const peerConnections = this.peerConnections; + const { peerConnections } = this; Object.keys(peerConnections).forEach((id) => { const peerConnection = peerConnections[id]; peerConnection.addStream(stream); @@ -560,7 +557,7 @@ class WebRTCClass { } stopAllPeerConnections() { - const peerConnections = this.peerConnections; + const { peerConnections } = this; Object.keys(peerConnections).forEach((id) => { this.stopPeerConnection(id); @@ -663,8 +660,8 @@ class WebRTCClass { video {Boolean} */ - startCall(media = {}) { - this.log('startCall', arguments); + startCall(media = {}, ...args) { + this.log('startCall', [media, ...args]); this.media = media; this.getLocalUserMedia(() => { this.active = true; @@ -674,8 +671,8 @@ class WebRTCClass { }); } - startCallAsMonitor(media = {}) { - this.log('startCallAsMonitor', arguments); + startCallAsMonitor(media = {}, ...args) { + this.log('startCallAsMonitor', [media, ...args]); this.media = media; this.active = true; this.monitor = true; @@ -771,7 +768,7 @@ class WebRTCClass { desktop {Boolean} */ - joinCall(data = {}) { + joinCall(data = {}, ...args) { if (data.media && data.media.audio) { this.media.audio = data.media.audio; } @@ -779,7 +776,7 @@ class WebRTCClass { this.media.video = data.media.video; } data.media = this.media; - this.log('joinCall', arguments); + this.log('joinCall', [data, ...args]); this.getLocalUserMedia(() => { this.remoteMonitoring = data.monitor; this.active = true; @@ -788,11 +785,11 @@ class WebRTCClass { } - onRemoteJoin(data) { + onRemoteJoin(data, ...args) { if (this.active !== true) { return; } - this.log('onRemoteJoin', arguments); + this.log('onRemoteJoin', [data, ...args]); let peerConnection = this.getPeerConnection(data.from); // needsRefresh = false @@ -844,12 +841,12 @@ class WebRTCClass { } - onRemoteOffer(data) { + onRemoteOffer(data, ...args) { if (this.active !== true) { return; } - this.log('onRemoteOffer', arguments); + this.log('onRemoteOffer', [data, ...args]); let peerConnection = this.getPeerConnection(data.from); if (['have-local-offer', 'stable'].includes(peerConnection.signalingState) && (peerConnection.createdAt < data.ts)) { @@ -898,14 +895,14 @@ class WebRTCClass { candidate {RTCIceCandidate JSON encoded} */ - onRemoteCandidate(data) { + onRemoteCandidate(data, ...args) { if (this.active !== true) { return; } if (data.to !== this.selfId) { return; } - this.log('onRemoteCandidate', arguments); + this.log('onRemoteCandidate', [data, ...args]); const peerConnection = this.getPeerConnection(data.from); if (peerConnection.iceConnectionState !== 'closed' && peerConnection.iceConnectionState !== 'failed' && peerConnection.iceConnectionState !== 'disconnected' && peerConnection.iceConnectionState !== 'completed') { peerConnection.addIceCandidate(new RTCIceCandidate(data.candidate)); @@ -926,14 +923,14 @@ class WebRTCClass { desktop {Boolean} */ - onRemoteDescription(data) { + onRemoteDescription(data, ...args) { if (this.active !== true) { return; } if (data.to !== this.selfId) { return; } - this.log('onRemoteDescription', arguments); + this.log('onRemoteDescription', [data, ...args]); const peerConnection = this.getPeerConnection(data.from); if (data.type === 'offer') { peerConnection.remoteMedia = data.media; diff --git a/server/configuration/accounts_meld.js b/server/configuration/accounts_meld.js index 807eb9631a1..d4f1280c03c 100644 --- a/server/configuration/accounts_meld.js +++ b/server/configuration/accounts_meld.js @@ -2,7 +2,7 @@ import _ from 'underscore'; const orig_updateOrCreateUserFromExternalService = Accounts.updateOrCreateUserFromExternalService; -Accounts.updateOrCreateUserFromExternalService = function(serviceName, serviceData = {} /* , options*/) { +Accounts.updateOrCreateUserFromExternalService = function(serviceName, serviceData = {}, ...args /* , options*/) { const services = [ 'facebook', 'github', @@ -46,5 +46,5 @@ Accounts.updateOrCreateUserFromExternalService = function(serviceName, serviceDa } } - return orig_updateOrCreateUserFromExternalService.apply(this, arguments); + return orig_updateOrCreateUserFromExternalService.apply(this, [serviceName, serviceData, ...args]); }; diff --git a/server/lib/accounts.js b/server/lib/accounts.js index 631b9add704..1f241bf6b2f 100644 --- a/server/lib/accounts.js +++ b/server/lib/accounts.js @@ -38,7 +38,8 @@ Accounts.emailTemplates.userToActivate = { Accounts.emailTemplates.userActivated = { subject({ active, username }) { - const action = active ? (username ? 'Activated' : 'Approved') : 'Deactivated'; + const activated = username ? 'Activated' : 'Approved'; + const action = active ? activated : 'Deactivated'; const subject = `Accounts_Email_${ action }_Subject`; const siteName = RocketChat.settings.get('Site_Name'); @@ -49,7 +50,8 @@ Accounts.emailTemplates.userActivated = { const header = RocketChat.placeholders.replace(RocketChat.settings.get('Email_Header') || ''); const footer = RocketChat.placeholders.replace(RocketChat.settings.get('Email_Footer') || ''); - const action = active ? (username ? 'Activated' : 'Approved') : 'Deactivated'; + const activated = username ? 'Activated' : 'Approved'; + const action = active ? activated : 'Deactivated'; const html = RocketChat.placeholders.replace(TAPi18n.__(`Accounts_Email_${ action }`), { name: s.escapeHTML(name), diff --git a/server/publications/spotlight.js b/server/publications/spotlight.js index 63e29169385..2f2cdc6f98c 100644 --- a/server/publications/spotlight.js +++ b/server/publications/spotlight.js @@ -39,7 +39,7 @@ Meteor.methods({ name: 1, }, }; - const userId = this.userId; + const { userId } = this; if (userId == null) { if (RocketChat.settings.get('Accounts_AllowAnonymousRead') === true) { result.rooms = fetchRooms(userId, RocketChat.models.Rooms.findByNameAndTypeNotDefault(regex, 'c', roomOptions).fetch()); diff --git a/server/startup/migrations/v059.js b/server/startup/migrations/v059.js index 5563a007e6d..c5f0843d440 100644 --- a/server/startup/migrations/v059.js +++ b/server/startup/migrations/v059.js @@ -3,7 +3,7 @@ RocketChat.Migrations.add({ up() { const users = RocketChat.models.Users.find({}, { sort: { createdAt: 1 }, limit: 1 }).fetch(); if (users && users.length > 0) { - const createdAt = users[0].createdAt; + const { createdAt } = users[0]; RocketChat.models.Settings.update({ createdAt: { $exists: 0 } }, { $set: { createdAt } }, { multi: true }); RocketChat.models.Statistics.update({ installedAt: { $exists: 0 } }, { $set: { installedAt: createdAt } }, { multi: true }); } diff --git a/server/startup/migrations/v070.js b/server/startup/migrations/v070.js index 53eaaefca12..14eabbf7df3 100644 --- a/server/startup/migrations/v070.js +++ b/server/startup/migrations/v070.js @@ -3,7 +3,7 @@ RocketChat.Migrations.add({ up() { const settings = RocketChat.models.Settings.find({ _id: /^Accounts_OAuth_Custom_.+/ }).fetch(); for (const setting of settings) { - const _id = setting._id; + const { _id } = setting; setting._id = setting._id.replace(/Accounts_OAuth_Custom_([A-Za-z0-9]+)_(.+)/, 'Accounts_OAuth_Custom-$1-$2'); setting._id = setting._id.replace(/Accounts_OAuth_Custom_([A-Za-z0-9]+)/, 'Accounts_OAuth_Custom-$1'); diff --git a/server/startup/migrations/v094.js b/server/startup/migrations/v094.js index 907d791e008..cdf69fb0c43 100644 --- a/server/startup/migrations/v094.js +++ b/server/startup/migrations/v094.js @@ -12,6 +12,7 @@ RocketChat.Migrations.add({ emailAddress = email.address.address; return true; } + return false; }); const existingUser = RocketChat.models.Users.findOne({ 'emails.address': emailAddress }, { fields: { _id: 1 } }); if (existingUser) { diff --git a/tests/end-to-end/api/01-users.js b/tests/end-to-end/api/01-users.js index 67889eba659..709df2e91f8 100644 --- a/tests/end-to-end/api/01-users.js +++ b/tests/end-to-end/api/01-users.js @@ -344,7 +344,7 @@ describe('[Users]', function() { .expect('Content-Type', 'application/json') .expect(200) .expect((res) => { - const user = res.body.user; + const { user } = res.body; expect(res.body).to.have.property('success', true); expect(user.username).to.be.equal(editedUsername); expect(user.name).to.be.equal(editedName); @@ -363,7 +363,7 @@ describe('[Users]', function() { .expect('Content-Type', 'application/json') .expect(200) .expect((res) => { - const user = res.body.user; + const { user } = res.body; expect(res.body).to.have.property('success', true); expect(user.username).to.be.equal(editedUsername); }) @@ -424,7 +424,7 @@ describe('[Users]', function() { .expect('Content-Type', 'application/json') .expect(200) .expect((res) => { - const user = res.body.user; + const { user } = res.body; expect(res.body).to.have.property('success', true); expect(user.emails[0].address).to.be.equal(editedEmail); expect(user.emails[0].verified).to.be.false; @@ -543,13 +543,16 @@ describe('[Users]', function() { .set(credentials) .send({ username: user.username }) .expect('Content-Type', 'application/json') - .end((err, res) => (err ? done() : request.get(api('me')) - .set({ 'X-Auth-Token': `${ res.body.data.authToken }`, 'X-User-Id': res.body.data.userId }) - .expect(200) - .expect((res) => { - expect(res.body).to.have.property('success', true); - }) - .end(done)))); + .end((err, res) => (err ? done() : + request.get(api('me')) + .set({ 'X-Auth-Token': `${ res.body.data.authToken }`, 'X-User-Id': res.body.data.userId }) + .expect(200) + .expect((res) => { + expect(res.body).to.have.property('success', true); + }) + .end(done)) + ) + ); }); }); diff --git a/tests/end-to-end/api/11-graphql.js b/tests/end-to-end/api/11-graphql.js index 47583d82f60..d856f330c5d 100644 --- a/tests/end-to-end/api/11-graphql.js +++ b/tests/end-to-end/api/11-graphql.js @@ -186,7 +186,7 @@ describe('GraphQL Tests', function() { .expect((res) => { expect(res.body).to.have.property('data'); expect(res.body).to.not.have.property('errors'); - const me = res.body.data.me; + const { me } = res.body.data; expect(me).to.have.property('username', user.username); expect(me).to.have.property('email', user.email); expect(me.channels).to.be.an('array'); diff --git a/tests/end-to-end/ui/13-permissions.js b/tests/end-to-end/ui/13-permissions.js index 0ddc5bdf808..f73f01d6191 100644 --- a/tests/end-to-end/ui/13-permissions.js +++ b/tests/end-to-end/ui/13-permissions.js @@ -5,10 +5,9 @@ import sideNav from '../../pageobjects/side-nav.page'; import flexTab from '../../pageobjects/flex-tab.page'; import admin from '../../pageobjects/administration.page'; import mainContent from '../../pageobjects/main-content.page'; -import { checkIfUserIsValid } from '../../data/checks'; +import { checkIfUserIsValid, checkIfUserIsAdmin } from '../../data/checks'; // test data imports -import { checkIfUserIsAdmin } from '../../data/checks'; import { username, email, password, adminUsername, adminEmail, adminPassword } from '../../data/user.js'; describe.skip('[Permissions]', () => {