Skip to content

Commit

Permalink
Initial commit
Browse files Browse the repository at this point in the history
  • Loading branch information
jrubins committed Aug 24, 2016
0 parents commit 3ed60d4
Show file tree
Hide file tree
Showing 17 changed files with 1,455 additions and 0 deletions.
8 changes: 8 additions & 0 deletions .eslintrc
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
{
"extends": "./index.js",
"env": {
"browser": true,
"node": true
},
"parser": "babel-eslint"
}
3 changes: 3 additions & 0 deletions README.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
# Neighborhoods.com JavaScript Style Guide

*Based on [AirBnb's JavaScript Style Guide](https://github.com/airbnb/javascript)*
18 changes: 18 additions & 0 deletions base/index.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,18 @@
module.exports = {
extends: [
'./rules/best-practices',
'./rules/errors',
'./rules/node',
'./rules/style',
'./rules/variables',
'./rules/es6',
'./rules/imports',
].map(require.resolve),
parserOptions: {
ecmaVersion: 7,
sourceType: 'module',
},
rules: {
strict: 2,
}
};
235 changes: 235 additions & 0 deletions base/rules/best-practices.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,235 @@
module.exports = {
rules: {
// enforces getter/setter pairs in objects
'accessor-pairs': 0,

// enforces return statements in callbacks of array's methods
// http://eslint.org/docs/rules/array-callback-return
'array-callback-return': 2,

// treat var statements as if they were block scoped
'block-scoped-var': 2,

// specify the maximum cyclomatic complexity allowed in a program
complexity: [0, 11],

// require return statements to either always or never specify values
'consistent-return': 2,

// specify curly brace conventions for all control statements
curly: [2, 'multi-line'],

// require default case in switch statements
'default-case': [2, { commentPattern: '^no default$' }],

// encourages use of dot notation whenever possible
'dot-notation': [2, { allowKeywords: true }],

// enforces consistent newlines before or after dots
// http://eslint.org/docs/rules/dot-location
'dot-location': [2, 'property'],

// require the use of === and !==
// http://eslint.org/docs/rules/eqeqeq
eqeqeq: [2, 'allow-null'],

// make sure for-in loops have an if statement
'guard-for-in': 2,

// disallow the use of alert, confirm, and prompt
'no-alert': 1,

// disallow use of arguments.caller or arguments.callee
'no-caller': 2,

// disallow lexical declarations in case/default clauses
// http://eslint.org/docs/rules/no-case-declarations.html
'no-case-declarations': 2,

// disallow division operators explicitly at beginning of regular expression
// http://eslint.org/docs/rules/no-div-regex
'no-div-regex': 0,

// disallow else after a return in an if
'no-else-return': 2,

// disallow empty functions, except for standalone funcs/arrows
// http://eslint.org/docs/rules/no-empty-function
'no-empty-function': [2, {
allow: [
'arrowFunctions',
'functions',
'methods',
]
}],

// disallow empty destructuring patterns
// http://eslint.org/docs/rules/no-empty-pattern
'no-empty-pattern': 2,

// disallow comparisons to null without a type-checking operator
'no-eq-null': 0,

// disallow use of eval()
'no-eval': 2,

// disallow adding to native types
'no-extend-native': 2,

// disallow unnecessary function binding
'no-extra-bind': 2,

// disallow Unnecessary Labels
// http://eslint.org/docs/rules/no-extra-label
'no-extra-label': 2,

// disallow fallthrough of case statements
'no-fallthrough': 2,

// disallow the use of leading or trailing decimal points in numeric literals
'no-floating-decimal': 2,

// disallow implicit type conversions
// http://eslint.org/docs/rules/no-implicit-coercion
'no-implicit-coercion': [0, {
boolean: false,
number: true,
string: true,
allow: [],
}],

// disallow var and named functions in global scope
// http://eslint.org/docs/rules/no-implicit-globals
'no-implicit-globals': 0,

// disallow use of eval()-like methods
'no-implied-eval': 2,

// disallow this keywords outside of classes or class-like objects
'no-invalid-this': 0,

// disallow usage of __iterator__ property
'no-iterator': 2,

// disallow use of labels for anything other then loops and switches
'no-labels': [2, { allowLoop: false, allowSwitch: false }],

// disallow unnecessary nested blocks
'no-lone-blocks': 2,

// disallow creation of functions within loops
'no-loop-func': 2,

// disallow magic numbers
// http://eslint.org/docs/rules/no-magic-numbers
'no-magic-numbers': [0, {
ignore: [],
ignoreArrayIndexes: true,
enforceConst: true,
detectObjects: false,
}],

// disallow use of multiple spaces
'no-multi-spaces': 2,

// disallow use of multiline strings
'no-multi-str': 2,

// disallow reassignments of native objects
'no-native-reassign': 2,

// disallow use of new operator when not part of the assignment or comparison
'no-new': 2,

// disallow use of new operator for Function object
'no-new-func': 2,

// disallows creating new instances of String, Number, and Boolean
'no-new-wrappers': 2,

// disallow use of (old style) octal literals
'no-octal': 2,

// disallow use of octal escape sequences in string literals, such as
// var foo = 'Copyright \251';
'no-octal-escape': 2,

// disallow reassignment of function parameters
// disallow parameter object manipulation
// rule: http://eslint.org/docs/rules/no-param-reassign.html
'no-param-reassign': [2, { props: true }],

// disallow usage of __proto__ property
'no-proto': 2,

// disallow declaring the same variable more then once
'no-redeclare': 2,

// disallow use of assignment in return statement
'no-return-assign': 2,

// disallow use of `javascript:` urls.
'no-script-url': 2,

// disallow self assignment
// http://eslint.org/docs/rules/no-self-assign
'no-self-assign': 2,

// disallow comparisons where both sides are exactly the same
'no-self-compare': 2,

// disallow use of comma operator
'no-sequences': 2,

// restrict what can be thrown as an exception
'no-throw-literal': 2,

// disallow unmodified conditions of loops
// http://eslint.org/docs/rules/no-unmodified-loop-condition
'no-unmodified-loop-condition': 0,

// disallow usage of expressions in statement position
'no-unused-expressions': [2, {
allowShortCircuit: false,
allowTernary: false,
}],

// disallow unused labels
// http://eslint.org/docs/rules/no-unused-labels
'no-unused-labels': 2,

// disallow unnecessary .call() and .apply()
'no-useless-call': 0,

// disallow useless string concatenation
// http://eslint.org/docs/rules/no-useless-concat
'no-useless-concat': 2,

// disallow unnecessary string escaping
// http://eslint.org/docs/rules/no-useless-escape
'no-useless-escape': 2,

// disallow use of void operator
// http://eslint.org/docs/rules/no-void
'no-void': 2,

// disallow usage of configurable warning terms in comments: e.g. todo
'no-warning-comments': [0, { terms: ['todo', 'fixme', 'xxx'], location: 'start' }],

// disallow use of the with statement
'no-with': 2,

// require use of the second argument for parseInt()
radix: 2,

// requires to declare all vars on top of their containing scope
'vars-on-top': 2,

// require immediate function invocation to be wrapped in parentheses
// http://eslint.org/docs/rules/wrap-iife.html
'wrap-iife': [2, 'outside'],

// require or disallow Yoda conditions
yoda: 2
}
};
104 changes: 104 additions & 0 deletions base/rules/errors.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,104 @@
module.exports = {
rules: {
// require trailing commas in multiline object literals
// @todo discuss
//'comma-dangle': [2, 'always-multiline'],

// disallow assignment in conditional expressions
'no-cond-assign': [2, 'always'],

// disallow use of console
'no-console': 1,

// disallow use of constant expressions in conditions
'no-constant-condition': 1,

// disallow control characters in regular expressions
'no-control-regex': 2,

// disallow use of debugger
'no-debugger': 2,

// disallow duplicate arguments in functions
'no-dupe-args': 2,

// disallow duplicate keys when creating object literals
'no-dupe-keys': 2,

// disallow a duplicate case label.
'no-duplicate-case': 2,

// disallow empty statements
'no-empty': 2,

// disallow the use of empty character classes in regular expressions
'no-empty-character-class': 2,

// disallow assigning to the exception in a catch block
'no-ex-assign': 2,

// disallow double-negation boolean casts in a boolean context
// http://eslint.org/docs/rules/no-extra-boolean-cast
'no-extra-boolean-cast': 2,

// disallow unnecessary parentheses
// http://eslint.org/docs/rules/no-extra-parens
'no-extra-parens': [0, 'all', {
conditionalAssign: true,
nestedBinaryExpressions: false,
returnAssign: false,
}],

// disallow unnecessary semicolons
'no-extra-semi': 2,

// disallow overwriting functions written as function declarations
'no-func-assign': 2,

// disallow function or variable declarations in nested blocks
'no-inner-declarations': 2,

// disallow invalid regular expression strings in the RegExp constructor
'no-invalid-regexp': 2,

// disallow irregular whitespace outside of strings and comments
'no-irregular-whitespace': 2,

// disallow negation of the left operand of an in expression
'no-negated-in-lhs': 2,

// disallow the use of object properties of the global object (Math and JSON) as functions
'no-obj-calls': 2,

// disallow use of Object.prototypes builtins directly
// http://eslint.org/docs/rules/no-prototype-builtins
'no-prototype-builtins': 2,

// disallow multiple spaces in a regular expression literal
'no-regex-spaces': 2,

// disallow sparse arrays
'no-sparse-arrays': 2,

// Avoid code that looks like two expressions but is actually one
// http://eslint.org/docs/rules/no-unexpected-multiline
'no-unexpected-multiline': 2,

// disallow unreachable statements after a return, throw, continue, or break statement
'no-unreachable': 2,

// disallow return/throw/break/continue inside finally blocks
// http://eslint.org/docs/rules/no-unsafe-finally
'no-unsafe-finally': 2,

// disallow comparisons with the value NaN
'use-isnan': 2,

// ensure JSDoc comments are valid
// http://eslint.org/docs/rules/valid-jsdoc
'valid-jsdoc': 0,

// ensure that the results of typeof are compared against a valid string
'valid-typeof': 2
}
};
Loading

0 comments on commit 3ed60d4

Please sign in to comment.