123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349 |
- {
- "parser": "babel-eslint",
- "ecmaFeatures": {
- "jsx": true,
- "modules": true
- },
- "env": {
- "browser": true,
- "es6": true,
- "jest": true,
- "jquery": true // hard-loaded into vendor.js
- },
- "globals": {
- "require": false,
- "expect": false,
- "sinon": false,
- "MockApiClient": true,
- "TestStubs": true,
- "Raven": true,
- "jest": true
- },
- "plugins": [
- "react",
- "import",
- "getsentry"
- ],
- "settings": {
- "import/resolver": "webpack",
- "import/extensions": [".js", ".jsx"]
- },
- "rules": {
- /**
- * Strict mode
- */
- "strict": [
- 2,
- "global"
- ], // http://eslint.org/docs/rules/strict
- /**
- * ES6
- */
- "no-var": 2, // http://eslint.org/docs/rules/no-var
- "prefer-const": 0, // http://eslint.org/docs/rules/prefer-const
- /**
- * Variables
- */
- "no-shadow": 2, // http://eslint.org/docs/rules/no-shadow
- "no-shadow-restricted-names": 2, // http://eslint.org/docs/rules/no-shadow-restricted-names
- "no-undef": 2, // http://eslint.org/docs/rules/no-undef
- "no-unused-vars": [
- 2,
- { // http://eslint.org/docs/rules/no-unused-vars
- "vars": "local",
- "args": "none"
- }
- ],
- "no-use-before-define": 2, // http://eslint.org/docs/rules/no-use-before-define
- /**
- * Possible errors
- */
- "comma-dangle": [
- 0,
- "always-multiline"
- ], // http://eslint.org/docs/rules/comma-dangle
- "no-cond-assign": [
- 2,
- "always"
- ], // http://eslint.org/docs/rules/no-cond-assign
- "no-console": 1, // http://eslint.org/docs/rules/no-console
- "no-debugger": 1, // http://eslint.org/docs/rules/no-debugger
- "no-alert": 1, // http://eslint.org/docs/rules/no-alert
- "no-constant-condition": 1, // http://eslint.org/docs/rules/no-constant-condition
- "no-dupe-keys": 2, // http://eslint.org/docs/rules/no-dupe-keys
- "no-duplicate-case": 2, // http://eslint.org/docs/rules/no-duplicate-case
- "no-empty": 2, // http://eslint.org/docs/rules/no-empty
- "no-ex-assign": 2, // http://eslint.org/docs/rules/no-ex-assign
- "no-extra-boolean-cast": 0, // http://eslint.org/docs/rules/no-extra-boolean-cast
- "no-extra-semi": 2, // http://eslint.org/docs/rules/no-extra-semi
- "no-func-assign": 2, // http://eslint.org/docs/rules/no-func-assign
- "no-inner-declarations": 2, // http://eslint.org/docs/rules/no-inner-declarations
- "no-invalid-regexp": 2, // http://eslint.org/docs/rules/no-invalid-regexp
- "no-irregular-whitespace": 2, // http://eslint.org/docs/rules/no-irregular-whitespace
- "no-obj-calls": 2, // http://eslint.org/docs/rules/no-obj-calls
- "no-sparse-arrays": 2, // http://eslint.org/docs/rules/no-sparse-arrays
- "no-unreachable": 2, // http://eslint.org/docs/rules/no-unreachable
- "semi": [
- 2,
- "always"
- ], // http://eslint.org/docs/rules/semi.html
- "use-isnan": 2, // http://eslint.org/docs/rules/use-isnan
- "block-scoped-var": 2, // http://eslint.org/docs/rules/block-scoped-var
- /**
- * Best practices
- */
- "consistent-return": 2, // http://eslint.org/docs/rules/consistent-return
- "curly": 0, // http://eslint.org/docs/rules/curly [REVISIT ME]
- "default-case": 2, // http://eslint.org/docs/rules/default-case
- "dot-notation": [
- 2,
- { // http://eslint.org/docs/rules/dot-notation
- "allowKeywords": true
- }
- ],
- "eqeqeq": 0, // http://eslint.org/docs/rules/eqeqeq [REVISIT ME]
- "guard-for-in": 0, // http://eslint.org/docs/rules/guard-for-in [REVISIT ME]
- "jsx-quotes": [
- 2,
- "prefer-double"
- ], // http://eslint.org/docs/rules/jsx-quotes
- "no-caller": 2, // http://eslint.org/docs/rules/no-caller
- "no-else-return": 0, // http://eslint.org/docs/rules/no-else-return [REVISIT ME]
- "no-eq-null": 2, // http://eslint.org/docs/rules/no-eq-null
- "no-eval": 2, // http://eslint.org/docs/rules/no-eval
- "no-extend-native": 2, // http://eslint.org/docs/rules/no-extend-native
- "no-extra-bind": 2, // http://eslint.org/docs/rules/no-extra-bind
- "no-fallthrough": 2, // http://eslint.org/docs/rules/no-fallthrough
- "no-floating-decimal": 2, // http://eslint.org/docs/rules/no-floating-decimal
- "no-implied-eval": 2, // http://eslint.org/docs/rules/no-implied-eval
- "no-lone-blocks": 2, // http://eslint.org/docs/rules/no-lone-blocks
- "no-loop-func": 2, // http://eslint.org/docs/rules/no-loop-func
- "no-multi-str": 2, // http://eslint.org/docs/rules/no-multi-str
- "no-native-reassign": 2, // http://eslint.org/docs/rules/no-native-reassign
- "no-new": 2, // http://eslint.org/docs/rules/no-new
- "no-new-func": 2, // http://eslint.org/docs/rules/no-new-func
- "no-new-wrappers": 2, // http://eslint.org/docs/rules/no-new-wrappers
- "no-octal": 2, // http://eslint.org/docs/rules/no-octal
- "no-octal-escape": 2, // http://eslint.org/docs/rules/no-octal-escape
- "no-param-reassign": 0, // http://eslint.org/docs/rules/no-param-reassign [REVISIT ME]
- "no-proto": 2, // http://eslint.org/docs/rules/no-proto
- "no-redeclare": 2, // http://eslint.org/docs/rules/no-redeclare
- "no-return-assign": 2, // http://eslint.org/docs/rules/no-return-assign
- "no-script-url": 2, // http://eslint.org/docs/rules/no-script-url
- "no-self-compare": 2, // http://eslint.org/docs/rules/no-self-compare
- "no-sequences": 2, // http://eslint.org/docs/rules/no-sequences
- "no-throw-literal": 2, // http://eslint.org/docs/rules/no-throw-literal
- "no-with": 2, // http://eslint.org/docs/rules/no-with
- "quotes": [
- 2,
- "single",
- {
- "avoidEscape": true
- }
- ], // http://eslint.org/docs/rules/quotes.html
- "radix": 2, // http://eslint.org/docs/rules/radix
- "computed-property-spacing": [
- 2,
- "never"
- ], // http://eslint.org/docs/rules/space-in-brackets.html
- "array-bracket-spacing": [
- 2,
- "never"
- ], // http://eslint.org/docs/rules/space-in-brackets.html
- "object-curly-spacing": [
- 2,
- "never"
- ], // http://eslint.org/docs/rules/space-in-brackets.html
- "space-infix-ops": 2, // http://eslint.org/docs/rules/space-infix-ops.html
- "vars-on-top": 0, // http://eslint.org/docs/rules/vars-on-top
- "wrap-iife": [
- 2,
- "any"
- ], // http://eslint.org/docs/rules/wrap-iife
- "yoda": 2, // http://eslint.org/docs/rules/yoda
- /**
- * React
- */
- "react/display-name": 0, // https://github.com/yannickcr/eslint-plugin-react/blob/master/docs/rules/display-name.md
- "react/no-multi-comp": [
- 0,
- {
- "ignoreStateless": true
- }
- ], // https://github.com/yannickcr/eslint-plugin-react/blob/master/docs/rules/no-multi-comp.md
- "react/jsx-key": 2, // https://github.com/yannickcr/eslint-plugin-react/blob/master/docs/rules/jsx-key.md
- "react/jsx-no-undef": 2, // https://github.com/yannickcr/eslint-plugin-react/blob/master/docs/rules/jsx-no-undef.md
- "react/jsx-no-duplicate-props": 2, // https://github.com/yannickcr/eslint-plugin-react/blob/master/docs/rules/jsx-no-duplicate-props.md
- "react/jsx-uses-react": 2, // https://github.com/yannickcr/eslint-plugin-react/blob/master/docs/rules/jsx-uses-react.md
- "react/jsx-uses-vars": 2, // https://github.com/yannickcr/eslint-plugin-react/blob/master/docs/rules/jsx-uses-vars.md
- "react/no-did-mount-set-state": 2, // https://github.com/yannickcr/eslint-plugin-react/blob/master/docs/rules/no-did-mount-set-state.md
- "react/no-did-update-set-state": 2, // https://github.com/yannickcr/eslint-plugin-react/blob/master/docs/rules/no-did-update-set-state.md"
- "react/no-unknown-property": 2, // https://github.com/yannickcr/eslint-plugin-react/blob/master/docs/rules/no-unknown-property.md
- "react/prop-types": [
- 2,
- {
- "ignore": [
- "className",
- "children",
- "location",
- "params"
- ]
- }
- ],
- "react/react-in-jsx-scope": 2, // https://github.com/yannickcr/eslint-plugin-react/blob/master/docs/rules/react-in-jsx-scope.md
- "react/self-closing-comp": 2, // https://github.com/yannickcr/eslint-plugin-react/blob/master/docs/rules/self-closing-comp.md
- "react/sort-comp": 2, // https://github.com/yannickcr/eslint-plugin-react/blob/master/docs/rules/sort-comp.md
- // Disabled because of prettier
- "react/jsx-wrap-multilines": 0, // https://github.com/yannickcr/eslint-plugin-react/blob/master/docs/rules/wrap-multilines.md
- /**
- * Imports (defaults from airbnb guide unless noted)
- * https://github.com/airbnb/javascript/blob/master/packages/eslint-config-airbnb-base/rules/imports.js
- */
- // ensure imports point to files/modules that can be resolved
- // https://github.com/benmosher/eslint-plugin-import/blob/master/docs/rules/no-unresolved.md
- "import/no-unresolved": [2, { commonjs: true, caseSensitive: true }],
- // ensure named imports coupled with named exports
- // https://github.com/benmosher/eslint-plugin-import/blob/master/docs/rules/named.md#when-not-to-use-it
- "import/named": 0,
- // ensure default import coupled with default export
- // https://github.com/benmosher/eslint-plugin-import/blob/master/docs/rules/default.md#when-not-to-use-it
- "import/default": 0,
- // https://github.com/benmosher/eslint-plugin-import/blob/master/docs/rules/namespace.md
- "import/namespace": 0,
- // disallow invalid exports, e.g. multiple defaults
- // https://github.com/benmosher/eslint-plugin-import/blob/master/docs/rules/export.md
- "import/export": 2,
- // Redflags
- // do not allow a default import name to match a named export (airbnb: error)
- // Issue with `DefaultIssuePlugin` and `app/plugins/index`
- // https://github.com/benmosher/eslint-plugin-import/blob/master/docs/rules/no-named-as-default.md
- "import/no-named-as-default": 0,
- // warn on accessing default export property names that are also named exports (airbnb: error)
- // This cannot be abled because of how `utils` is exported, as well as how it used in getsentry
- // https://github.com/benmosher/eslint-plugin-import/blob/master/docs/rules/no-named-as-default-member.md
- "import/no-named-as-default-member": 0,
- // disallow use of jsdoc-marked-deprecated imports
- // https://github.com/benmosher/eslint-plugin-import/blob/master/docs/rules/no-deprecated.md
- "import/no-deprecated": 0,
- // Forbid mutable exports (airbnb: error)
- // https://github.com/benmosher/eslint-plugin-import/blob/master/docs/rules/no-mutable-exports.md
- // TODO: enable?
- "import/no-mutable-exports": 0,
- // disallow require()
- // https://github.com/benmosher/eslint-plugin-import/blob/master/docs/rules/no-commonjs.md
- "import/no-commonjs": 0,
- // disallow AMD require/define
- // https://github.com/benmosher/eslint-plugin-import/blob/master/docs/rules/no-amd.md
- "import/no-amd": 2,
- // No Node.js builtin modules (airbnb: off)
- // https://github.com/benmosher/eslint-plugin-import/blob/master/docs/rules/no-nodejs-modules.md
- "import/no-nodejs-modules": 2,
- // Stylistic
- // disallow non-import statements appearing before import statements
- // https://github.com/benmosher/eslint-plugin-import/blob/master/docs/rules/first.md
- "import/first": [2, "absolute-first"],
- // disallow duplicate imports
- // https://github.com/benmosher/eslint-plugin-import/blob/master/docs/rules/no-duplicates.md
- "import/no-duplicates": 2,
- // disallow namespace imports
- // https://github.com/benmosher/eslint-plugin-import/blob/master/docs/rules/no-namespace.md
- "import/no-namespace": 0,
- // Ensure consistent use of file extension within the import path
- // https://github.com/benmosher/eslint-plugin-import/blob/master/docs/rules/extensions.md
- "import/extensions": [2, "always", {
- "js": "never",
- "jsx": "never"
- }],
- // Enforce a convention in module import order
- // https://github.com/benmosher/eslint-plugin-import/blob/master/docs/rules/order.md
- // TODO: enable?
- "import/order": [0, {
- "groups": [["builtin", "external", "internal"], "parent", "sibling", "index"],
- "newlines-between": "ignore"
- }],
- // Require a newline after the last import/require in a group
- // https://github.com/benmosher/eslint-plugin-import/blob/master/docs/rules/newline-after-import.md
- "import/newline-after-import": 2,
- // Require modules with a single export to use a default export (airbnb: error)
- // https://github.com/benmosher/eslint-plugin-import/blob/master/docs/rules/prefer-default-export.md
- "import/prefer-default-export": 0,
- // Restrict which files can be imported in a given folder
- // https://github.com/benmosher/eslint-plugin-import/blob/master/docs/rules/no-restricted-paths.md
- "import/no-restricted-paths": 0,
- // Forbid modules to have too many dependencies
- // https://github.com/benmosher/eslint-plugin-import/blob/master/docs/rules/max-dependencies.md
- "import/max-dependencies": [0, { max: 10 }],
- // Forbid import of modules using absolute paths
- // https://github.com/benmosher/eslint-plugin-import/blob/master/docs/rules/no-absolute-path.md
- "import/no-absolute-path": 2,
- // Forbid require() calls with expressions (airbnb: error)
- // https://github.com/benmosher/eslint-plugin-import/blob/master/docs/rules/no-dynamic-require.md
- "import/no-dynamic-require": 0,
- // prevent importing the submodules of other modules
- // https://github.com/benmosher/eslint-plugin-import/blob/master/docs/rules/no-internal-modules.md
- "import/no-internal-modules": [0, {
- "allow": []
- }],
- // Warn if a module could be mistakenly parsed as a script by a consumer
- // leveraging Unambiguous JavaScript Grammar
- // https://github.com/benmosher/eslint-plugin-import/blob/master/docs/rules/unambiguous.md
- // this should not be enabled until this proposal has at least been *presented* to TC39.
- // At the moment, it"s not a thing.
- "import/unambiguous": 0,
- // Forbid Webpack loader syntax in imports
- // https://github.com/benmosher/eslint-plugin-import/blob/master/docs/rules/no-webpack-loader-syntax.md
- "import/no-webpack-loader-syntax": 2,
- // Prevent unassigned imports
- // https://github.com/benmosher/eslint-plugin-import/blob/master/docs/rules/no-unassigned-import.md
- // importing for side effects is perfectly acceptable, if you need side effects.
- "import/no-unassigned-import": 0,
- // Prevent importing the default as if it were named
- // https://github.com/benmosher/eslint-plugin-import/blob/master/docs/rules/no-named-default.md
- "import/no-named-default": 2,
- // Reports if a module"s default export is unnamed
- // https://github.com/benmosher/eslint-plugin-import/blob/d9b712ac7fd1fddc391f7b234827925c160d956f/docs/rules/no-anonymous-default-export.md
- "import/no-anonymous-default-export": [0, {
- "allowArray": false,
- "allowArrowFunction": false,
- "allowAnonymousClass": false,
- "allowAnonymousFunction": false,
- "allowLiteral": false,
- "allowObject": false
- }],
- /**
- * Custom
- */
- "getsentry/jsx-needs-il8n": 0, // highlights literals in JSX components w/o translation tags
- }
- }
|