2
0
Эх сурвалжийг харах

Add eslint-plugin-meteor

Add rules for eslint-plugin-meteor.

Use local version of eslint and eslint-plugin-meteor, instead of
relying on global versions. Ensures consistent versions of eslint and
eslint-plugin-meteor for all developers.
Dominik Ferber 9 жил өмнө
parent
commit
3956a6ec20
6 өөрчлөгдсөн 80 нэмэгдсэн , 54 устгасан
  1. 34 39
      .eslintrc
  2. 1 0
      .gitignore
  3. 1 1
      models/attachments.js
  4. 19 13
      models/users.js
  5. 24 0
      package.json
  6. 1 1
      sandstorm.js

+ 34 - 39
.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,35 @@ 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/globals: 2
+  meteor/no-zero-timeout: 2
+  meteor/no-session: 0
+  meteor/pubsub: 2
+  meteor/core: 2
+  meteor/methods: 2
+  meteor/check: 2
+  meteor/connections: 2
+  meteor/collections: 2
+  meteor/session: [2, 'no-equal']
+
+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 +103,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 - 0
.gitignore

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

+ 1 - 1
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

+ 19 - 13
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.

+ 24 - 0
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"
+  }
+}

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