summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMaxime Quandalle <maxime@quandalle.com>2015-10-28 23:36:04 +0100
committerMaxime Quandalle <maxime@quandalle.com>2015-10-28 23:36:04 +0100
commitaae5030b53d644649e9b8cd2e2a03ec843a13162 (patch)
tree9e440d50b108b6ca4806fe1447fb4d59d0f4b72d
parent31b60d82fcae64a844805a2a76a0af25fb9c16c2 (diff)
parentc9130324f6c337d0393bf37fe72b67b47ece8322 (diff)
downloadwekan-aae5030b53d644649e9b8cd2e2a03ec843a13162.tar.gz
wekan-aae5030b53d644649e9b8cd2e2a03ec843a13162.tar.bz2
wekan-aae5030b53d644649e9b8cd2e2a03ec843a13162.zip
Merge pull request #370 from dferber90/linter
Add ESLint-plugin-Meteor
-rw-r--r--.eslintrc77
-rw-r--r--.gitignore1
-rw-r--r--.travis.yml5
-rw-r--r--client/components/activities/comments.js2
-rw-r--r--models/attachments.js2
-rw-r--r--models/users.js32
-rw-r--r--package.json24
-rw-r--r--sandstorm.js2
8 files changed, 87 insertions, 58 deletions
diff --git a/.eslintrc b/.eslintrc
index c952e5e0..a8017e66 100644
--- a/.eslintrc
+++ b/.eslintrc
@@ -1,7 +1,14 @@
ecmaFeatures:
experimentalObjectRestSpread: true
+plugins:
+ - meteor
+
+parser: babel-eslint
+
rules:
+ strict: 0
+ no-undef: 2
accessor-pairs: 2
comma-dangle: [2, 'always-multiline']
consistent-return: 2
@@ -43,36 +50,39 @@ rules:
prefer-spread: 2
prefer-template: 2
-globals:
- # Meteor globals
- Meteor: false
- DDP: false
- Mongo: false
- Session: false
- Accounts: false
- Template: false
- Blaze: false
- UI: false
- Match: false
- check: false
- Tracker: false
- Deps: false
- ReactiveVar: false
- EJSON: false
- HTTP: false
- Email: false
- Assets: false
- Handlebars: false
- Package: false
- App: false
- Npm: false
- Tinytest: false
- Random: false
- HTML: false
+ # eslint-plugin-meteor
+ ## Meteor API
+ meteor/globals: 2
+ meteor/core: 2
+ meteor/pubsub: 2
+ meteor/methods: 2
+ meteor/check: 2
+ meteor/connections: 2
+ meteor/collections: 2
+ meteor/session: [2, 'no-equal']
+
+ ## Best practices
+ meteor/no-session: 0
+ meteor/no-zero-timeout: 2
+ meteor/no-blaze-lifecycle-assignment: 2
+settings:
+ meteor:
+
+ # Our collections
+ collections:
+ - AccountsTemplates
+ - Activities
+ - Attachments
+ - Boards
+ - CardComments
+ - Cards
+ - Lists
+ - UnsavedEditCollection
+ - Users
+
+globals:
# Exported by packages we use
- '$': false
- _: false
autosize: false
Avatar: true
Avatars: true
@@ -97,17 +107,6 @@ globals:
T9n: false
TAPi18n: false
- # Our collections
- AccountsTemplates: true
- Activities: true
- Attachments: true
- Boards: true
- CardComments: true
- Cards: true
- Lists: true
- UnsavedEditCollection: true
- Users: true
-
# Our objects
CSSEvents: true
EscapeActions: true
diff --git a/.gitignore b/.gitignore
index 986a8b46..7c40fcd4 100644
--- a/.gitignore
+++ b/.gitignore
@@ -4,3 +4,4 @@
.tx/
*.sublime-workspace
tmp/
+node_modules/
diff --git a/.travis.yml b/.travis.yml
index 55f8ed48..a8724631 100644
--- a/.travis.yml
+++ b/.travis.yml
@@ -3,7 +3,6 @@ language: node_js
node_js:
- "0.10.40"
install:
- - "npm install -g eslint"
- - "npm install -g eslint-plugin-meteor"
+ - "npm install"
script:
- - "eslint ./"
+ - "npm test"
diff --git a/client/components/activities/comments.js b/client/components/activities/comments.js
index f9bbcff8..18bf9ef0 100644
--- a/client/components/activities/comments.js
+++ b/client/components/activities/comments.js
@@ -23,7 +23,7 @@ BlazeComponent.extendComponent({
commentFormIsOpen.set(true);
},
'submit .js-new-comment-form'(evt) {
- const input = this.getInput()
+ const input = this.getInput();
const text = input.val().trim();
if (text) {
CardComments.insert({
diff --git a/models/attachments.js b/models/attachments.js
index 8ef0fef0..01e467ff 100644
--- a/models/attachments.js
+++ b/models/attachments.js
@@ -1,4 +1,4 @@
-Attachments = new FS.Collection('attachments', {
+Attachments = new FS.Collection('attachments', { // eslint-disable-line meteor/collections
stores: [
// XXX Add a new store for cover thumbnails so we don't load big images in
diff --git a/models/users.js b/models/users.js
index b35104ec..1e69564d 100644
--- a/models/users.js
+++ b/models/users.js
@@ -1,4 +1,4 @@
-Users = Meteor.users;
+Users = Meteor.users; // eslint-disable-line meteor/collections
// Search a user in the complete server database by its name or username. This
// is used for instance to add a new user to a board.
@@ -8,6 +8,24 @@ Users.initEasySearch(searchInFields, {
returnFields: [...searchInFields, 'profile.avatarUrl'],
});
+if (Meteor.isClient) {
+ Users.helpers({
+ isBoardMember() {
+ const board = Boards.findOne(Session.get('currentBoard'));
+ return board &&
+ _.contains(_.pluck(board.members, 'userId'), this._id) &&
+ _.where(board.members, {userId: this._id})[0].isActive;
+ },
+
+ isBoardAdmin() {
+ const board = Boards.findOne(Session.get('currentBoard'));
+ return board &&
+ this.isBoardMember(board) &&
+ _.where(board.members, {userId: this._id})[0].isAdmin;
+ },
+ });
+}
+
Users.helpers({
boards() {
return Boards.find({ userId: this._id });
@@ -23,18 +41,6 @@ Users.helpers({
return _.contains(starredBoards, boardId);
},
- isBoardMember() {
- const board = Boards.findOne(Session.get('currentBoard'));
- return board && _.contains(_.pluck(board.members, 'userId'), this._id) &&
- _.where(board.members, {userId: this._id})[0].isActive;
- },
-
- isBoardAdmin() {
- const board = Boards.findOne(Session.get('currentBoard'));
- return board && this.isBoardMember(board) &&
- _.where(board.members, {userId: this._id})[0].isAdmin;
- },
-
getAvatarUrl() {
// Although we put the avatar picture URL in the `profile` object, we need
// to support Sandstorm which put in the `picture` attribute by default.
diff --git a/package.json b/package.json
new file mode 100644
index 00000000..821f4619
--- /dev/null
+++ b/package.json
@@ -0,0 +1,24 @@
+{
+ "name": "wekan",
+ "version": "1.0.0",
+ "description": "The open-source Trello-like kanban",
+ "private": true,
+ "scripts": {
+ "lint": "eslint .",
+ "test": "npm run lint"
+ },
+ "repository": {
+ "type": "git",
+ "url": "git+https://github.com/wekan/wekan.git"
+ },
+ "license": "MIT",
+ "bugs": {
+ "url": "https://github.com/wekan/wekan/issues"
+ },
+ "homepage": "https://github.com/wekan/wekan#readme",
+ "devDependencies": {
+ "babel-eslint": "4.1.3",
+ "eslint": "1.7.3",
+ "eslint-plugin-meteor": "1.5.0"
+ }
+}
diff --git a/sandstorm.js b/sandstorm.js
index 51f8ba34..65f24866 100644
--- a/sandstorm.js
+++ b/sandstorm.js
@@ -109,7 +109,7 @@ if (isSandstorm && Meteor.isClient) {
// sandstorm client to return relative paths instead of absolutes.
const _absoluteUrl = Meteor.absoluteUrl;
const _defaultOptions = Meteor.absoluteUrl.defaultOptions;
- Meteor.absoluteUrl = (path, options) => {
+ Meteor.absoluteUrl = (path, options) => { // eslint-disable-line meteor/core
const url = _absoluteUrl(path, options);
return url.replace(/^https?:\/\/127\.0\.0\.1:[0-9]{2,5}/, '');
};