UNPKG

2.88 kBJavaScriptView Raw
1/* eslint-disable import/no-commonjs */
2
3/**
4 * @type {Record<string, any>} Eslint settings
5 */
6const settings = {
7 root: true,
8 globals: {},
9 plugins: ["jsdoc"],
10 extends: [
11 "eslint:recommended",
12 "plugin:import/errors",
13 "plugin:import/warnings",
14 "prettier",
15 ],
16 settings: {
17 jsdoc: {
18 mode: "typescript",
19 preferredTypes: {
20 Object: "object",
21 "object<>": "Record<>",
22 "Object<>": "Record<>",
23 "object.<>": "Record<>",
24 "Object.<>": "Record<>",
25 "Array.<>": "[]",
26 "Array<>": "[]",
27 String: "string",
28 Boolean: "boolean",
29 Number: "number",
30 },
31 },
32 },
33 parser: "@babel/eslint-parser",
34 parserOptions: {
35 requireConfigFile: false,
36 babelOptions: {
37 plugins: ["@babel/plugin-syntax-class-properties"],
38 },
39 },
40 rules: {
41 // ESLint base
42 "default-case-last": "error",
43 "default-param-last": "error",
44 "no-console": ["error", { allow: ["dir", "time", "timeEnd"] }],
45 "no-else-return": "error",
46 "no-eq-null": "error",
47 "no-labels": "error",
48 "no-process-exit": "off",
49 "no-promise-executor-return": "error",
50 "no-return-assign": "error",
51 "no-sequences": "error",
52 "no-throw-literal": "error",
53 "no-unsafe-optional-chaining": [
54 "error",
55 { disallowArithmeticOperators: true },
56 ],
57 "no-var": "error",
58 "prefer-const": "error",
59 "prefer-promise-reject-errors": "error",
60 "prefer-template": "error",
61 "require-await": "error",
62
63 // ESLint plugin import
64 "import/export": "off",
65 "import/first": "error",
66 "import/named": "off",
67 "import/namespace": "off",
68 "import/newline-after-import": ["error", { count: 1 }],
69 "import/no-commonjs": "error",
70 "import/no-default-export": "error",
71 "import/order": [
72 "error",
73 {
74 "newlines-between": "never",
75 alphabetize: { order: "asc", caseInsensitive: true },
76 },
77 ],
78
79 // ESLint plugin jsdoc
80 "jsdoc/check-alignment": "error",
81 "jsdoc/check-examples": "off",
82 "jsdoc/check-param-names": "error",
83 "jsdoc/check-property-names": "error",
84 "jsdoc/check-syntax": "error",
85 "jsdoc/check-tag-names": ["error", { definedTags: [] }],
86 "jsdoc/check-types": ["error"],
87 "jsdoc/check-values": "error",
88 "jsdoc/empty-tags": "error",
89 "jsdoc/newline-after-description": ["error", "always"],
90 "jsdoc/require-param-name": "error",
91 "jsdoc/require-property": "error",
92 "jsdoc/require-property-name": "error",
93 "jsdoc/require-property-type": "error",
94 "jsdoc/require-returns-check": "off",
95 "jsdoc/require-returns-description": "off",
96 "jsdoc/require-returns-type": "off",
97 "jsdoc/valid-types": "off",
98 },
99 env: {
100 node: true,
101 es2021: true,
102 },
103};
104
105/**
106 * @type {Record<string, any>} Eslint settings
107 */
108module.exports = settings;