| { |
| "env": { |
| "node": true, |
| "browser": true |
| }, |
| "globals": { |
| "ArrayBuffer": true, |
| "Uint8Array": true, |
| "Float32Array": true, |
| "Float64Array": true, |
| "define": true, |
| "global": true, |
| "XMLHttpRequest": true, |
| "Promise": true |
| }, |
| "parserOptions": { |
| "ecmaVersion": 5 |
| }, |
| "extends": "eslint:recommended", |
| "rules": { |
| |
| // Possible errors |
| "no-extra-parens": 1, // turned on as the daily lecture |
| "no-prototype-builtins": 1, |
| "no-template-curly-in-string": 1, |
| "no-unsafe-negation": 1, |
| "valid-jsdoc": 1, |
| |
| // Best practices |
| "accessor-pairs": 1, |
| "array-callback-return": 1, |
| "block-scoped-var": 1, |
| "class-methods-use-this": 1, |
| "complexity": 0, // is sometimes necessary |
| "consistent-return": 1, |
| "curly": 0, // sometimes more braces than code |
| "default-case": 0, // just forces unnecessary code |
| "dot-location": 0, // looks nicer for chainables |
| "dot-notation": 0, // not compatible with some reserved properties |
| "eqeqeq": [1, "allow-null"], |
| "guard-for-in": 1, |
| "no-alert": 1, |
| "no-caller": 1, |
| "no-cond-assign": 0, |
| "no-div-regex": 1, |
| "no-else-return": 1, |
| "no-empty-function": 1, |
| "no-eval": 1, |
| "no-extend-native": 1, |
| "no-extra-bind": 1, |
| "no-extra-label": 1, |
| "no-floating-decimal": 1, |
| "no-global-assign": 1, |
| "no-implicit-coercion": 1, |
| "no-implicit-globals": 1, |
| "no-implied-eval": 1, |
| "no-invalid-this": 1, |
| "no-iterator": 1, |
| "no-labels": 1, |
| "no-lone-blocks": 1, |
| "no-loop-func": 1, |
| "no-magic-numbers": 0, // it's actually fun to turn this on here |
| "no-new-func": 1, |
| "no-new-wrappers": 1, |
| "no-new": 1, |
| "no-octal-escape": 1, |
| "no-param-reassign": 0, // is necessary for varargs functions |
| "no-proto": 1, |
| "no-restricted-properties": 1, |
| "no-sequences": 1, |
| "no-script-url": 1, |
| "no-self-compare": 1, |
| "no-throw-literal": 1, |
| "no-unmodified-loop-condition": 1, |
| "no-unused-expressions": 1, |
| "no-useless-call": 1, |
| "no-useless-concat": 1, |
| "no-useless-escape": 1, |
| "no-useless-return": 1, |
| "no-void": 1, |
| "no-warning-comments": 1, |
| "no-with": 1, |
| "radix": 1, |
| "vars-on-top": 0, // makes code harder to read, not faster |
| "wrap-iife": 0, // used frequently where polyfilling |
| "yoda": 1, |
| |
| // Strict mode |
| "strict": 1, |
| |
| // Variables |
| "init-declarations": 0, // because no-undef-init is on and we actually want undefineds |
| "no-catch-shadow": 0, // no IE8 support anyway |
| "no-label-var": 1, |
| "no-restricted-globals": 1, |
| "no-return-assign": 0, // can make sense. |
| "no-shadow-restricted-names": 1, |
| "no-shadow": 0, // this is javascript. it has forEach and all that stuff. |
| "no-undef-init": 1, |
| "no-undef": 2, |
| "no-undefined": 0, // produces shorter code when testing against this |
| "no-use-before-define": 0, // can actually be used for a better overview, i.e. with module.exports |
| "no-unused-vars": 1, // a warning is sufficient |
| |
| // Node.js and CommonJS |
| "callback-return": 1, |
| "global-require": 0, // only way to resolve cyclic references |
| "handle-callback-err": 1, |
| "no-mixed-requires": 1, |
| "no-new-require": 1, |
| "no-path-concat": 1, |
| "no-process-env": 1, |
| "no-process-exit": 1, |
| "no-restricted-modules": 1, |
| "no-sync": 0, // for loadSync |
| |
| // Stylistic Issues |
| "semi": 1, // maybe next time |
| "no-extra-semi": 1, |
| "quotes": 1, // useful for gzip |
| "no-trailing-spaces": 1, |
| "no-unneeded-ternary": 1, |
| "unicode-bom": [2, "never"] |
| |
| // ECMAScript 6 // maybe next time |
| } |
| } |