UNPKG

7.17 kBJavaScriptView Raw
1"use strict";
2
3// @ts-check
4module.exports = {
5 extends: ["eslint:recommended", "plugin:prettier/recommended"],
6 env: {
7 node: true
8 },
9 parser: "typescript-eslint-parser",
10 parserOptions: {
11 sourceType: "module",
12 ecmaVersion: 6
13 },
14 plugins: ["typescript", "import"],
15 settings: {
16 "import/resolver": {
17 node: {
18 extensions: [".mjs", ".js", ".json", "ts"]
19 }
20 },
21 "import/extensions": [".js", ".mjs", ".ts"],
22 "import/core-modules": [],
23 "import/ignore": ["node_modules", "\\.(coffee|scss|css|less|hbs|svg|json)$"]
24 },
25 rules: {
26 /* Possible Errors */
27 "no-undef": "off",
28 // issues with Interfaces: https://github.com/nzakas/eslint-plugin-typescript/issues/110
29 "no-console": "off",
30 "no-template-curly-in-string": "error",
31
32 /* Best Practices */
33 "array-callback-return": "error",
34 "block-scoped-var": "error",
35 "consistent-return": "error",
36 curly: "error",
37 "default-case": "error",
38 "dot-notation": "error",
39 eqeqeq: "error",
40 "max-classes-per-file": "error",
41 "no-alert": "error",
42 "no-caller": "error",
43 "no-else-return": "error",
44 "no-empty-function": "error",
45 "no-eq-null": "error",
46 "no-eval": "error",
47 // Why isn't this part of the eslint:recommended? lol
48 "no-implied-eval": "error",
49 // I mean, why would you use eval nowadays?
50 "no-extend-native": "error",
51 "no-extra-bind": "error",
52 "no-invalid-this": "error",
53 "no-iterator": "error",
54 "no-labels": "error",
55 "no-loop-func": "error",
56 "no-multi-str": "error",
57 "no-new-func": "error",
58 "no-new-wrappers": "error",
59 "no-octal-escape": "error",
60 "no-param-reassign": "error",
61 "no-proto": "error",
62 "no-restricted-properties": ["error", {
63 object: "arguments",
64 property: "callee",
65 message: "arguments.callee is deprecated"
66 }, {
67 object: "global",
68 property: "isFinite",
69 message: "Please use Number.isFinite instead"
70 }, {
71 object: "self",
72 property: "isFinite",
73 message: "Please use Number.isFinite instead"
74 }, {
75 object: "window",
76 property: "isFinite",
77 message: "Please use Number.isFinite instead"
78 }, {
79 object: "global",
80 property: "isNaN",
81 // The global isNaN coerces non-numbers to numbers, returning true for anything that coerces to NaN. If this behavior is desired, make it explicit.
82 message: "Please use Number.isNaN instead"
83 }, {
84 object: "self",
85 property: "isNaN",
86 message: "Please use Number.isNaN instead"
87 }, {
88 object: "window",
89 property: "isNaN",
90 message: "Please use Number.isNaN instead"
91 }, {
92 property: "__defineGetter__",
93 message: "Please use Object.defineProperty instead."
94 }, {
95 property: "__defineSetter__",
96 message: "Please use Object.defineProperty instead."
97 }, {
98 object: "Math",
99 property: "pow",
100 message: "Use the exponentiation operator (**) instead."
101 }],
102 "no-return-assign": "error",
103 "no-return-await": "error",
104 "no-script-url": "error",
105 "no-self-compare": "error",
106 "no-sequences": "error",
107 "no-throw-literal": "error",
108 "no-unmodified-loop-condition": "error",
109 "no-unused-expressions": "error",
110 "no-useless-call": "error",
111 "no-useless-concat": "error",
112 "no-void": "error",
113 "no-with": "error",
114 "prefer-promise-reject-errors": "error",
115 radix: "error",
116 "require-await": "error",
117
118 /* Variables */
119 "no-label-var": "error",
120 "no-shadow": "error",
121 "no-shadow-restricted-names": "error",
122 "no-use-before-define": "error",
123
124 /* Node.js and CommonJS */
125 "callback-return": "error",
126 "handle-callback-err": "error",
127 "no-buffer-constructor": "error",
128 "no-mixed-requires": "error",
129 "no-new-require": "error",
130 "no-path-concat": "error",
131
132 /* Stylistic Issues */
133 camelcase: "error",
134 "func-names": "error",
135 "lines-between-class-members": "error",
136 "max-statements-per-line": "error",
137 "new-cap": "error",
138 "new-parens": "error",
139 "no-bitwise": "error",
140 "no-lonely-if": "error",
141 "no-multi-assign": "error",
142 "no-new-object": "error",
143 "no-restricted-syntax": ["error", {
144 selector: "ForInStatement",
145 message: "for..in loops iterate over the entire prototype chain, which is virtually never what you want. Use Object.{keys,values,entries}, and iterate over the resulting array."
146 }, {
147 selector: "ForOfStatement",
148 message: "iterators/generators require regenerator-runtime, which is too heavyweight for this guide to allow them. Separately, loops should be avoided in favor of array iterations."
149 }, {
150 selector: "LabeledStatement",
151 message: "Labels are a form of GOTO; using them makes code confusing and hard to maintain and understand."
152 }, {
153 selector: "WithStatement",
154 message: "`with` is disallowed in strict mode because it makes code impossible to predict and optimize."
155 }],
156 "no-unneeded-ternary": "error",
157 "operator-assignment": "error",
158 "spaced-comment": "error",
159
160 /* ECMAScript 6 */
161 "arrow-body-style": ["error", "as-needed"],
162 "no-duplicate-imports": "error",
163 "no-useless-computed-key": "error",
164 "no-useless-constructor": "error",
165 "no-useless-rename": "error",
166 "no-var": "error",
167 "object-shorthand": "error",
168 "prefer-arrow-callback": "error",
169 "prefer-const": "error",
170 "prefer-numeric-literals": "error",
171 "prefer-rest-params": "error",
172 "prefer-spread": "error",
173 "prefer-template": "error",
174 "symbol-description": "error",
175
176 /* Typescript plugin */
177 "typescript/adjacent-overload-signatures": "error",
178 "typescript/class-name-casing": "error",
179 "typescript/interface-name-prefix": "error",
180 "typescript/member-delimiter-style": ["error", {
181 delimiter: "none"
182 }],
183 "typescript/no-angle-bracket-type-assertion": "error",
184 "typescript/no-array-constructor": "error",
185 "typescript/no-empty-interface": "error",
186 "typescript/no-namespace": "error",
187 "typescript/no-non-null-assertion": "error",
188 "typescript/no-triple-slash-reference": "error",
189 "typescript/no-unused-vars": "error",
190 "typescript/no-use-before-define": "error",
191
192 /* Import plugin */
193 "import/default": "error",
194 "import/no-absolute-path": "error",
195 "import/no-webpack-loader-syntax": "error",
196 "import/no-self-import": "error",
197 "import/no-cycle": ["error", {
198 maxDepth: Infinity
199 }],
200 "import/no-useless-path-segments": "error",
201 "import/export": "error",
202 "import/no-named-as-default": "error",
203 "import/no-named-as-default-member": "error",
204 "import/no-extraneous-dependencies": "error",
205 "import/no-mutable-exports": "error",
206 "import/no-amd": "error",
207 "import/first": "error",
208 "import/no-duplicates": "error",
209 "import/order": ["error", {
210 groups: [["builtin", "external", "internal"]]
211 }],
212 "import/newline-after-import": "error",
213 "import/no-named-default": "error",
214 "import/no-anonymous-default-export": "error"
215 }
216};
217//# sourceMappingURL=eslintrc.js.map
\No newline at end of file