diff options
author | Maxime Quandalle <maxime@quandalle.com> | 2015-09-03 23:12:46 +0200 |
---|---|---|
committer | Maxime Quandalle <maxime@quandalle.com> | 2015-09-03 23:12:46 +0200 |
commit | b3851817ecd59b039f2c2228d08a1c6fd8e60d60 (patch) | |
tree | 82a50f69788d5c20632f3ec9c7d3e136502b93b4 /server | |
parent | 039cfe7edf8faf901069a94b3ca9b66f7973b26a (diff) | |
download | wekan-b3851817ecd59b039f2c2228d08a1c6fd8e60d60.tar.gz wekan-b3851817ecd59b039f2c2228d08a1c6fd8e60d60.tar.bz2 wekan-b3851817ecd59b039f2c2228d08a1c6fd8e60d60.zip |
Enforce a consistent ES6 coding style
Replace the old (and broken) jshint + jscsrc by eslint and configure
it to support some of the ES6 features.
The command `eslint` currently has one error which is a bug that was
discovered by its static analysis and should be fixed (usage of a
dead object).
Diffstat (limited to 'server')
-rw-r--r-- | server/lib/utils.js | 2 | ||||
-rw-r--r-- | server/migrations.js | 86 | ||||
-rw-r--r-- | server/publications/activities.js | 25 | ||||
-rw-r--r-- | server/publications/boards.js | 72 | ||||
-rw-r--r-- | server/publications/cards.js | 2 | ||||
-rw-r--r-- | server/publications/unsavedEdits.js | 2 |
6 files changed, 92 insertions, 97 deletions
diff --git a/server/lib/utils.js b/server/lib/utils.js index 56c87c0b..3e141f06 100644 --- a/server/lib/utils.js +++ b/server/lib/utils.js @@ -1,5 +1,5 @@ allowIsBoardAdmin = function(userId, board) { - var admins = _.pluck(_.where(board.members, {isAdmin: true}), 'userId'); + const admins = _.pluck(_.where(board.members, {isAdmin: true}), 'userId'); return _.contains(admins, userId); }; diff --git a/server/migrations.js b/server/migrations.js index e9b60ed9..05f5ff7d 100644 --- a/server/migrations.js +++ b/server/migrations.js @@ -11,35 +11,35 @@ // // To prevent this bug we always have to disable the schema validation and // argument transformations. We generally use the shorthandlers defined below. -var noValidate = { +const noValidate = { validate: false, filter: false, autoConvert: false, removeEmptyStrings: false, - getAutoValues: false + getAutoValues: false, }; -var noValidateMulti = _.extend(noValidate, { multi: true }); +const noValidateMulti = { ...noValidate, multi: true }; -Migrations.add('board-background-color', function() { - var defaultColor = '#16A085'; +Migrations.add('board-background-color', () => { + const defaultColor = '#16A085'; Boards.update({ background: { - $exists: false - } + $exists: false, + }, }, { $set: { background: { type: 'color', - color: defaultColor - } - } + color: defaultColor, + }, + }, }, noValidateMulti); }); -Migrations.add('lowercase-board-permission', function() { - _.forEach(['Public', 'Private'], function(permission) { +Migrations.add('lowercase-board-permission', () => { + _.forEach(['Public', 'Private'], (permission) => { Boards.update( - { permission: permission }, + { permission }, { $set: { permission: permission.toLowerCase() } }, noValidateMulti ); @@ -47,23 +47,23 @@ Migrations.add('lowercase-board-permission', function() { }); // Security migration: see https://github.com/wekan/wekan/issues/99 -Migrations.add('change-attachments-type-for-non-images', function() { - var newTypeForNonImage = 'application/octet-stream'; - Attachments.find().forEach(function(file) { - if (! file.isImage()) { +Migrations.add('change-attachments-type-for-non-images', () => { + const newTypeForNonImage = 'application/octet-stream'; + Attachments.find().forEach((file) => { + if (!file.isImage()) { Attachments.update(file._id, { $set: { 'original.type': newTypeForNonImage, - 'copies.attachments.type': newTypeForNonImage - } + 'copies.attachments.type': newTypeForNonImage, + }, }, noValidate); } }); }); -Migrations.add('card-covers', function() { - Cards.find().forEach(function(card) { - var cover = Attachments.findOne({ cardId: card._id, cover: true }); +Migrations.add('card-covers', () => { + Cards.find().forEach((card) => { + const cover = Attachments.findOne({ cardId: card._id, cover: true }); if (cover) { Cards.update(card._id, {$set: {coverId: cover._id}}, noValidate); } @@ -71,54 +71,54 @@ Migrations.add('card-covers', function() { Attachments.update({}, {$unset: {cover: ''}}, noValidateMulti); }); -Migrations.add('use-css-class-for-boards-colors', function() { - var associationTable = { +Migrations.add('use-css-class-for-boards-colors', () => { + const associationTable = { '#27AE60': 'nephritis', '#C0392B': 'pomegranate', '#2980B9': 'belize', '#8E44AD': 'wisteria', '#2C3E50': 'midnight', - '#E67E22': 'pumpkin' + '#E67E22': 'pumpkin', }; - Boards.find().forEach(function(board) { - var oldBoardColor = board.background.color; - var newBoardColor = associationTable[oldBoardColor]; + Boards.find().forEach((board) => { + const oldBoardColor = board.background.color; + const newBoardColor = associationTable[oldBoardColor]; Boards.update(board._id, { $set: { color: newBoardColor }, - $unset: { background: '' } + $unset: { background: '' }, }, noValidate); }); }); -Migrations.add('denormalize-star-number-per-board', function() { - Boards.find().forEach(function(board) { - var nStars = Users.find({'profile.starredBoards': board._id}).count(); +Migrations.add('denormalize-star-number-per-board', () => { + Boards.find().forEach((board) => { + const nStars = Users.find({'profile.starredBoards': board._id}).count(); Boards.update(board._id, {$set: {stars: nStars}}, noValidate); }); }); // We want to keep a trace of former members so we can efficiently publish their // infos in the general board publication. -Migrations.add('add-member-isactive-field', function() { - Boards.find({}, {fields: {members: 1}}).forEach(function(board) { - var allUsersWithSomeActivity = _.chain( - Activities.find({boardId: board._id}, {fields:{userId:1}}).fetch()) +Migrations.add('add-member-isactive-field', () => { + Boards.find({}, {fields: {members: 1}}).forEach((board) => { + const allUsersWithSomeActivity = _.chain( + Activities.find({ boardId: board._id }, { fields:{ userId:1 }}).fetch()) .pluck('userId') .uniq() .value(); - var currentUsers = _.pluck(board.members, 'userId'); - var formerUsers = _.difference(allUsersWithSomeActivity, currentUsers); + const currentUsers = _.pluck(board.members, 'userId'); + const formerUsers = _.difference(allUsersWithSomeActivity, currentUsers); - var newMemberSet = []; - _.forEach(board.members, function(member) { + const newMemberSet = []; + _.forEach(board.members, (member) => { member.isActive = true; newMemberSet.push(member); }); - _.forEach(formerUsers, function(userId) { + _.forEach(formerUsers, (userId) => { newMemberSet.push({ - userId: userId, + userId, isAdmin: false, - isActive: false + isActive: false, }); }); Boards.update(board._id, {$set: {members: newMemberSet}}, noValidate); diff --git a/server/publications/activities.js b/server/publications/activities.js index 5277206c..38c61ebf 100644 --- a/server/publications/activities.js +++ b/server/publications/activities.js @@ -1,24 +1,19 @@ -// We use activities fields at three different places: -// 1. The home page that contains -// 2. The board -// 3. -// We use publish paginate for these three publications. +// We use activities fields at two different places: +// 1. The board sidebar +// 2. The card activity tab +// We use this publication to paginate for these two publications. -Meteor.publish('activities', function(mode, id, limit) { - check(mode, Match.Where(function(x) { +Meteor.publish('activities', (kind, id, limit) => { + check(kind, Match.Where((x) => { return ['board', 'card'].indexOf(x) !== -1; })); check(id, String); check(limit, Number); - var selector = {}; - if (mode === 'board') - selector.boardId = id; - else if (mode === 'card') - selector.cardId = id; - - return Activities.find(selector, { + return Activities.find({ + [`${kind}Id`]: id, + }, { + limit, sort: {createdAt: -1}, - limit: limit }); }); diff --git a/server/publications/boards.js b/server/publications/boards.js index ae30357f..7f6a544b 100644 --- a/server/publications/boards.js +++ b/server/publications/boards.js @@ -5,20 +5,20 @@ Meteor.publish('boards', function() { // Ensure that the user is connected. If it is not, we need to return an empty // array to tell the client to remove the previously published docs. - if (! Match.test(this.userId, String)) + if (!Match.test(this.userId, String)) return []; // Defensive programming to verify that starredBoards has the expected // format -- since the field is in the `profile` a user can modify it. - var starredBoards = Users.findOne(this.userId).profile.starredBoards || []; + const starredBoards = Users.findOne(this.userId).profile.starredBoards || []; check(starredBoards, [String]); return Boards.find({ archived: false, $or: [ { 'members.userId': this.userId }, - { _id: { $in: starredBoards } } - ] + { _id: { $in: starredBoards } }, + ], }, { fields: { _id: 1, @@ -27,13 +27,13 @@ Meteor.publish('boards', function() { title: 1, color: 1, members: 1, - permission: 1 - } + permission: 1, + }, }); }); Meteor.publish('archivedBoards', function() { - if (! Match.test(this.userId, String)) + if (!Match.test(this.userId, String)) return []; return Boards.find({ @@ -41,23 +41,23 @@ Meteor.publish('archivedBoards', function() { members: { $elemMatch: { userId: this.userId, - isAdmin: true - } - } + isAdmin: true, + }, + }, }, { fields: { _id: 1, archived: 1, slug: 1, - title: 1 - } - }) + title: 1, + }, + }); }); Meteor.publishComposite('board', function(boardId) { check(boardId, String); return { - find: function() { + find() { return Boards.find({ _id: boardId, archived: false, @@ -65,18 +65,18 @@ Meteor.publishComposite('board', function(boardId) { // it. $or: [ { permission: 'public' }, - { 'members.userId': this.userId } - ] + { 'members.userId': this.userId }, + ], }, { limit: 1 }); }, children: [ // Lists { - find: function(board) { + find(board) { return Lists.find({ - boardId: board._id + boardId: board._id, }); - } + }, }, // Cards and cards comments @@ -103,48 +103,48 @@ Meteor.publishComposite('board', function(boardId) { // And in the meantime our code below works pretty well -- it's not even a // hack! { - find: function(board) { + find(board) { return Cards.find({ - boardId: board._id + boardId: board._id, }); }, children: [ // comments { - find: function(card) { + find(card) { return CardComments.find({ - cardId: card._id + cardId: card._id, }); - } + }, }, // Attachments { - find: function(card) { + find(card) { return Attachments.find({ - cardId: card._id + cardId: card._id, }); - } - } - ] + }, + }, + ], }, // Board members. This publication also includes former board members that // aren't members anymore but may have some activities attached to them in // the history. { - find: function(board) { + find(board) { return Users.find({ - _id: { $in: _.pluck(board.members, 'userId') } + _id: { $in: _.pluck(board.members, 'userId') }, }); }, // Presence indicators children: [{ - find: function(user) { + find(user) { return Presences.find({userId: user._id}); - } - }] - } - ] + }, + }], + }, + ], }; }); diff --git a/server/publications/cards.js b/server/publications/cards.js index a9664095..c9abc421 100644 --- a/server/publications/cards.js +++ b/server/publications/cards.js @@ -1,4 +1,4 @@ -Meteor.publish('card', function(cardId) { +Meteor.publish('card', (cardId) => { check(cardId, String); return Cards.find({ _id: cardId }); }); diff --git a/server/publications/unsavedEdits.js b/server/publications/unsavedEdits.js index ecc24646..264eba74 100644 --- a/server/publications/unsavedEdits.js +++ b/server/publications/unsavedEdits.js @@ -1,5 +1,5 @@ Meteor.publish('unsaved-edits', function() { return UnsavedEditCollection.find({ - userId: this.userId + userId: this.userId, }); }); |