{
  "rules": {

    //EcmaScript rules
    "strict": [2, "global"], //IMPORTANT controls location of Use Strict Directives. But not mandatory because it's managed by browserify
    "no-console":2, //IMPORTANT disallow use of console
    "no-unused-vars":2,//IMPORTANT disallow declaration of variables that are not used in the code
    "no-undef":2,//IMPORTANT disallow use of undeclared variables unless mentioned in a /*global */ block
    "no-reserved-keys":2,  //IMPORTANT - disallow reserved words being used as object literal keys (off by default)
    "camelcase":1,//WARNING when you do not put camelcase on yout code
    "no-multi-spaces":1,//WARNING disallow use of multiple spaces
    "no-underscore-dangle":1,//WARNING disallow dangling underscores in identifiers
    "valid-jsdoc":1,//WARNING Ensure JSDoc comments are valid
    "no-extra-parens":0,//NOT disallow unnecessary parentheses
    "quotes":0,//NOT specify whether double or single quotes should be used
    "comma-spacing":0, //NOT enforce spacing before and after comma
    "space-infix-ops":0, //NOT  require spaces around operators
    "key-spacing":0, //NOT enforces spacing between keys and values in object literal properties
    "eol-last":0, //NOT enforce newline at the end of file, with no multiple empty lines

    //react rules
    "react/no-multi-comp": 2,//IMPORTANT Prevent multiple component definition per file
    "react/prop-types": 2,//IMPORTANT Prevent missing props validation in a React component definition
    "react/no-did-mount-set-state": 2,//IMPORTANT Prevent usage of setState in componentDidMount
    "react/no-did-update-set-state": 2,//IMPORTANT Prevent usage of setState in componentDidUpdate
    "react/jsx-uses-react": 2,//IMPORTANT Prevent React to be incorrectly marked as unused
    "react/jsx-uses-vars": 2,//IMPORTANT Prevent variables used in JSX to be incorrectly marked as unused
    "react/display-name": 1,//WARNING missing displayName in a React component definition
    "react/self-closing-comp": 1,//WARNING Prevent extra closing tags for components without children
    "react/wrap-multilines": 0,//NOT Prevent missing parentheses around multilines JSX
    "react/react-in-jsx-scope": 0 //NOT Prevent missing React when using JSX
  },

  "globals": {
    "jest":true,
    "describe":true,
    "it":true,
    "expect":true,
    "require":true,
    "module":true
  },
  "env":{
    "node": true, //node environment to authorize module and require
    "browser": true //browser environment to authorize document and window keywords
  },
  "plugins": [
    "react"
  ],
  "ecmaFeatures": {
    "jsx": true,//enabled jsx
    "objectLiteralShorthandMethods":true, //enable object literal shorthand methods
    "modules":false,//NOT enable modules and global strict mode (Module is enable by env:node:true)
    "classes":true, //enable classes class keyword
    "arrowFunctions":true, //enable arrowFunctions =>
    "templateStrings":true  // enable template string feature
  }

}
