.eslintrc
---
settings:
lodash:
pragma: _
root: true
plugins:
- mocha
- mongodb
- security
- lodash
- jsdoc
ecmaFeatures:
modules: true
jsx: true
env:
amd: true
browser: true
es6: true
jquery: true
node: true
extensions:
js: true
globals:
# Project commons
_: true
db: true
path: true
utils: true
global: true
# Models
User: true
# http://eslint.org/docs/rules/
rules:
# Possible Errors
no-await-in-loop: 2
no-compare-neg-zero: 2
no-cond-assign: 2
no-console: [2, { "allow": ["warn", "error", "info", "time", "timeEnd"] }]
no-constant-condition: 2
no-control-regex: 2
no-debugger: 2
no-dupe-args: 2
no-dupe-keys: 2
no-duplicate-case: 2
no-empty: 2
no-empty-character-class: 2
no-ex-assign: 2
no-extra-boolean-cast: 2
no-extra-parens: [2, all, { "nestedBinaryExpressions": false }]
no-extra-semi: 2
no-func-assign: 2
no-inner-declarations: [2, functions]
no-invalid-regexp: 2
no-irregular-whitespace: 2
no-unsafe-negation: 2
no-obj-calls: 2
no-prototype-builtins: 2
no-regex-spaces: 2
no-sparse-arrays: 2
no-template-curly-in-string: 2
no-unexpected-multiline: 2
no-unreachable: 2
no-unsafe-finally: 2
use-isnan: 2
valid-jsdoc: [2, { "requireReturn": false, "preferType": {
"object": "Object", "string": "String", "number": "Number", "buffer": "Buffer", "array": "Array"
},
"prefer": { "arg": "param", "argument": "param", "return": "returns", "class": "constructor" }
}]
valid-typeof: 2
# Best Practices
accessor-pairs: 2
array-callback-return: 1
block-scoped-var: 2
class-methods-use-this: 2
complexity: [2, 6]
consistent-return: [1, { "treatUndefinedAsUnspecified": true }]
curly: 2
default-case: 2
dot-location: 0
dot-notation: 2
eqeqeq: 2
guard-for-in: 2
no-alert: 2
no-caller: 2
no-case-declarations: 2
no-div-regex: 2
no-else-return: 2
no-empty-function: 2
no-empty-pattern: 2
no-eq-null: 2
no-eval: 2
no-extend-native: 2
no-extra-bind: 2
no-extra-label: 2
no-fallthrough: 2
no-floating-decimal: 2
no-global-assign: 2
no-implicit-coercion: 2
no-implicit-globals: 2
no-implied-eval: 2
no-invalid-this: 2
no-iterator: 2
no-labels: 2
no-lone-blocks: 2
no-loop-func: 2
no-magic-numbers: 0
no-multi-spaces: 2
no-multi-str: 2
no-new: 2
no-new-func: 2
no-new-wrappers: 2
no-octal: 2
no-octal-escape: 2
no-param-reassign: 0
no-proto: 2
no-redeclare: 2
no-restricted-properties: 2
no-return-assign: 2
no-return-await: 2
no-script-url: 2
no-self-assign: 2
no-self-compare: 2
no-sequences: 2
no-throw-literal: 2
no-unmodified-loop-condition: 2
no-unused-expressions: [2, { "allowShortCircuit": true, "allowTernary": true }]
no-unused-labels: 2
no-useless-call: 2
no-useless-concat: 2
no-useless-escape: 2
no-useless-return: 2
no-void: 2
no-warning-comments: 1
no-with: 2
prefer-promise-reject-errors: 2
radix: 2
require-await: 2
vars-on-top: 0
wrap-iife: 2
yoda: 2
# Strict
strict: 0
# Variables
init-declarations: 0
no-catch-shadow: 2
no-delete-var: 2
no-label-var: 2
no-restricted-globals: 2
no-shadow: 2
no-shadow-restricted-names: 2
no-undef-init: 2
no-undef: [2, { "typeof": true }]
no-undefined: 0
no-unused-vars: 2
no-use-before-define: 2
# Node.js and CommonJS
callback-return: 2
global-require: 2
handle-callback-err: 2
no-mixed-requires: 0
no-new-require: 0
no-path-concat: 2
no-process-env: 1
no-process-exit: 0
no-restricted-modules: 0
no-sync: 2
# Stylistic Issues
array-bracket-spacing: 2
block-spacing: 2
brace-style: [2, stroustrup, { "allowSingleLine": true }]
camelcase: 2
capitalized-comments: 0
comma-dangle: [2, never]
comma-spacing: 2
comma-style: 2
computed-property-spacing: 2
consistent-this: 2
eol-last: 2
func-call-spacing: 2
func-name-matching: 0
func-names: [2, never]
func-style: [2, expression]
id-blacklist: 0
id-length: 0
id-match: 0
indent: [2, tab]
jsx-quotes: [2, prefer-double]
key-spacing: [2, { "beforeColon": false, "afterColon": true, "mode": strict }]
keyword-spacing: 2
line-comment-position: 0
linebreak-style: 2
lines-around-comment: 2
lines-around-directive: 2
max-depth: 2
max-len: [2, 120]
max-lines: 0
max-nested-callbacks: 2
max-params: [2, 5]
max-statements: [2, 30]
max-statements-per-line: 0
multiline-ternary: 0
new-cap: 0
new-parens: 2
newline-after-var: [2, always]
newline-before-return: 2
newline-per-chained-call: 0
no-array-constructor: 0
no-bitwise: 0
no-continue: 0
no-inline-comments: 0
no-lonely-if: 2
no-mixed-operators: 0
no-mixed-spaces-and-tabs: 2
no-multi-assign: 0
no-multiple-empty-lines: 2
no-negated-condition: 2
no-nested-ternary: 2
no-new-object: 2
no-plusplus: 0
no-restricted-syntax: 0
no-tabs: 0
no-ternary: 0
no-trailing-spaces: 2
no-underscore-dangle: 0
no-unneeded-ternary: 2
no-whitespace-before-property: 2
object-curly-newline: 0
object-curly-spacing: [2, always]
object-property-newline: 0
one-var: [2, always]
one-var-declaration-per-line: 2
operator-assignment: [2, always]
operator-linebreak: 2
padded-blocks: [2, never]
quote-props: [2, as-needed]
quotes: [2, single]
require-jsdoc: [1, {
require: {
FunctionDeclaration: true,
MethodDefinition: true,
ClassDeclaration: true
}
}]
semi: 2
semi-spacing: 2
sort-keys: 0
sort-vars: 0
space-before-blocks: 2
space-before-function-paren: 2
space-in-parens: 2
space-infix-ops: 2
space-unary-ops: 0
spaced-comment: 2
template-tag-spacing: 2
unicode-bom: 2
wrap-regex: 0
# ECMAScript 6
arrow-body-style: 2
arrow-parens: 2
arrow-spacing: 2
constructor-super: 2
generator-star-spacing: 2
no-class-assign: 2
no-confusing-arrow: 2
no-const-assign: 2
no-dupe-class-members: 2
no-duplicate-imports: 2
no-new-symbol: 2
no-restricted-imports: 2
no-this-before-super: 2
no-useless-computed-key: 2
no-useless-constructor: 2
no-useless-rename: 2
no-var: 0
object-shorthand: 0
prefer-arrow-callback: 0
prefer-const: 0
prefer-destructuring: 0
prefer-numeric-literals: 0
prefer-rest-params: 0
prefer-spread: 2
prefer-template: 0
require-yield: 2
rest-spread-spacing: 2
sort-imports: 2
symbol-description: 2
template-curly-spacing: 2
yield-star-spacing: 2
# JSDoc
jsdoc/check-param-names: 2
jsdoc/check-tag-names: 2
jsdoc/check-types: 0
jsdoc/newline-after-description: 2
jsdoc/require-description-complete-sentence: 2
jsdoc/require-hyphen-before-param-description: 2
jsdoc/require-param: 2
jsdoc/require-param-description: 2
jsdoc/require-param-type: 2
jsdoc/require-returns-description: 2
jsdoc/require-returns-type: 2
# Lodash
lodash/callback-binding: 2
lodash/collection-method-value: 2
lodash/collection-return: 2
lodash/no-double-unwrap: 2
lodash/no-extra-args: 2
lodash/no-unbound-this: 2
lodash/unwrap: 2
lodash/chain-style: [2, "as-needed"]
lodash/path-style: 2
lodash/chaining: [2, always, 3]
lodash/consistent-compose: 2
lodash/identity-shorthand: 2
lodash/import-scope: [2, full]
lodash/matches-prop-shorthand: 2
lodash/no-commit: 2
lodash/prefer-compact: 2
lodash/prefer-filter: 2
lodash/prefer-flat-map: 2
lodash/prefer-invoke-map: 2
lodash/prefer-map: 2
lodash/prefer-reject: 2
lodash/prefer-thru: 2
lodash/prefer-wrapper-method: 2
lodash/preferred-alias: 2
lodash/prop-shorthand: 2
lodash/prefer-constant: 2
lodash/prefer-get: 2
lodash/prefer-includes: 2
lodash/prefer-is-nil: 2
lodash/prefer-lodash-chain: 2
lodash/prefer-lodash-method: 0
lodash/prefer-lodash-typecheck: 2
lodash/prefer-matches: 2
lodash/prefer-noop: 2
lodash/prefer-over-quantifier: 2
lodash/prefer-startswith: 2
lodash/prefer-times: 2
# MongoDB
mongodb/check-insert-calls: 2
mongodb/check-query-calls: 2
mongodb/check-update-calls: 2
mongodb/check-remove-calls: 2
mongodb/check-deprecated-calls: 2
mongodb/no-replace: 2
mongodb/check-rename-updates: 2
mongodb/check-unset-updates: 2
mongodb/check-current-date-updates: 2
mongodb/check-numeric-updates: 2
mongodb/check-minmax-updates: 2
mongodb/check-set-updates: 2
mongodb/check-push-updates: 2
mongodb/check-pull-updates: 2
mongodb/check-pop-updates: 2
mongodb/check-addtoset-updates: 2
mongodb/check-deprecated-updates: 2
# Security
security/detect-unsafe-regex: 2
security/detect-buffer-noassert: 2
security/detect-child-process: 1
security/detect-disable-mustache-escape: 2
security/detect-eval-with-expression: 2
security/detect-new-buffer: 2
security/detect-no-csrf-before-method-override: 0
security/detect-non-literal-fs-filename: 0
security/detect-non-literal-regexp: 2
security/detect-non-literal-require: 0
security/detect-object-injection: 1
security/detect-possible-timing-attacks: 2
security/detect-pseudoRandomBytes: 2