Merge pull request #370 from dferber90/linter

Add ESLint-plugin-Meteor
This commit is contained in:
Maxime Quandalle 2015-10-28 23:36:04 +01:00
commit aae5030b53
8 changed files with 87 additions and 58 deletions

View file

@ -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

1
.gitignore vendored
View file

@ -4,3 +4,4 @@
.tx/
*.sublime-workspace
tmp/
node_modules/

View file

@ -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"

View file

@ -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({

View file

@ -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

View file

@ -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.

24
package.json Normal file
View file

@ -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"
}
}

View file

@ -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}/, '');
};