@ololoepepe/eslint-config-typescript 0.0.11 → 0.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -0,0 +1,107 @@
1
+ export default {
2
+ rules: {
3
+ 'import-x/consistent-type-specifier-style': 'off', // TODO: Reconsider if use TS/Flow
4
+ 'import-x/default': 'error',
5
+ 'import-x/dynamic-import-chunkname': ['error'],
6
+ 'import-x/export': 'error',
7
+ 'import-x/exports-last': 'off',
8
+ 'import-x/extensions': 'off',
9
+ 'import-x/first': ['error', 'absolute-first'],
10
+ 'import-x/group-exports': 'off',
11
+ 'import-x/max-dependencies': 'off',
12
+ 'import-x/named': 'error',
13
+ 'import-x/namespace': ['error', {
14
+ allowComputed: false
15
+ }],
16
+ 'import-x/newline-after-import': ['error', {
17
+ considerComments: false,
18
+ count: 1
19
+ }],
20
+ 'import-x/no-absolute-path': ['error', {
21
+ amd: true,
22
+ commonjs: true,
23
+ esmodule: true
24
+ }],
25
+ 'import-x/no-amd': 'off',
26
+ 'import-x/no-anonymous-default-export': 'off',
27
+ 'import-x/no-commonjs': 'off',
28
+ 'import-x/no-cycle': ['error', {
29
+ amd: true,
30
+ commonjs: true,
31
+ esmodule: true, // TODO
32
+ ignoreExternal: true
33
+ }],
34
+ 'import-x/no-default-export': 'off',
35
+ 'import-x/no-deprecated': 'warn',
36
+ 'import-x/no-duplicates': ['error', {
37
+ considerQueryString: true
38
+ }],
39
+ 'import-x/no-dynamic-require': 'off', // TODO
40
+ 'import-x/no-empty-named-blocks': 'error',
41
+ 'import-x/no-extraneous-dependencies': 'error',
42
+ 'import-x/no-import-module-exports': 'off',
43
+ 'import-x/no-internal-modules': 'off',
44
+ 'import-x/no-mutable-exports': 'error',
45
+ 'import-x/no-named-as-default': 'warn',
46
+ 'import-x/no-named-as-default-member': 'error',
47
+ 'import-x/no-named-default': 'off',
48
+ 'import-x/no-named-export': 'off',
49
+ 'import-x/no-namespace': 'off',
50
+ 'import-x/no-nodejs-modules': 'off',
51
+ 'import-x/no-relative-packages': 'off',
52
+ 'import-x/no-relative-parent-imports': 'warn',
53
+ 'import-x/no-restricted-paths': 'off',
54
+ 'import-x/no-self-import': 'error',
55
+ 'import-x/no-unassigned-import': 'off',
56
+ 'import-x/no-unresolved': ['error', {
57
+ ignore: ['^#']
58
+ }],
59
+ 'import-x/no-unused-modules': 'off', // TODO: Reconsider
60
+ 'import-x/no-useless-path-segments': ['error', {
61
+ commonjs: true,
62
+ noUselessIndex: false
63
+ }],
64
+ 'import-x/no-webpack-loader-syntax': 'error',
65
+ 'import-x/order': ['error', {
66
+ alphabetize: {
67
+ caseInsensitive: true,
68
+ order: 'asc',
69
+ orderImportKind: 'ignore'
70
+ },
71
+ distinctGroup: true,
72
+ groups: ['builtin', 'external', 'type', 'internal', 'parent', 'sibling', 'index', 'object', 'unknown'],
73
+ 'newlines-between': 'always-and-inside-groups',
74
+ pathGroups: [{
75
+ group: 'internal',
76
+ pattern: '#src/**'
77
+ }, {
78
+ group: 'parent',
79
+ pattern: '../**/styles.js',
80
+ position: 'after'
81
+ }, {
82
+ group: 'parent',
83
+ pattern: '../**/styles.css',
84
+ position: 'after'
85
+ }, {
86
+ group: 'parent',
87
+ pattern: '../**/styles.less',
88
+ position: 'after'
89
+ }, {
90
+ group: 'sibling',
91
+ pattern: './**/styles.js',
92
+ position: 'after'
93
+ }, {
94
+ group: 'sibling',
95
+ pattern: './**/styles.css',
96
+ position: 'after'
97
+ }, {
98
+ group: 'sibling',
99
+ pattern: './**/styles.less',
100
+ position: 'after'
101
+ }],
102
+ warnOnUnassignedImports: false
103
+ }],
104
+ 'import-x/prefer-default-export': 'off',
105
+ 'import-x/unambiguous': 'off' // TODO: Reconsider
106
+ }
107
+ };
@@ -0,0 +1,48 @@
1
+ export default {
2
+ rules: {
3
+ 'n/callback-return': 'off',
4
+ 'n/exports-style': 'off',
5
+ 'n/file-extension-in-import': 'off', // Owned by import-x (import-x/extensions) — single owner for import paths.
6
+ 'n/global-require': 'off',
7
+ 'n/handle-callback-err': ['error', '^(err|error)$'],
8
+ 'n/hashbang': 'error',
9
+ 'n/no-callback-literal': 'error',
10
+ 'n/no-deprecated-api': 'error',
11
+ 'n/no-exports-assign': 'error',
12
+ 'n/no-extraneous-import': 'off', // Owned by import-x/no-extraneous-dependencies.
13
+ 'n/no-extraneous-require': 'off', // Owned by import-x/no-extraneous-dependencies.
14
+ 'n/no-missing-import': 'off', // Owned by import-x/no-unresolved (+ TS resolver).
15
+ 'n/no-missing-require': 'off', // Owned by import-x/no-unresolved (+ TS resolver).
16
+ 'n/no-mixed-requires': 'off',
17
+ 'n/no-new-require': 'error',
18
+ 'n/no-path-concat': 'error',
19
+ 'n/no-process-env': 'off',
20
+ 'n/no-process-exit': 'warn',
21
+ 'n/no-restricted-import': 'off',
22
+ 'n/no-restricted-require': 'off',
23
+ 'n/no-sync': 'off',
24
+ 'n/no-top-level-await': 'off',
25
+ 'n/no-unpublished-bin': 'error',
26
+ 'n/no-unpublished-import': 'error',
27
+ 'n/no-unpublished-require': 'error',
28
+ 'n/no-unsupported-features/es-builtins': 'error',
29
+ // Downlevel syntax is owned by the TypeScript compiler (tsconfig `target`),
30
+ // not by static syntax inspection; this rule misfires on TS source and would
31
+ // need an `engines.node`/`version` baseline this package does not declare.
32
+ 'n/no-unsupported-features/es-syntax': 'off',
33
+ 'n/no-unsupported-features/node-builtins': 'error',
34
+ 'n/prefer-global/buffer': 'error',
35
+ 'n/prefer-global/console': 'error',
36
+ 'n/prefer-global/crypto': 'error',
37
+ 'n/prefer-global/process': 'error',
38
+ 'n/prefer-global/text-decoder': 'error',
39
+ 'n/prefer-global/text-encoder': 'error',
40
+ 'n/prefer-global/timers': 'error',
41
+ 'n/prefer-global/url': 'error',
42
+ 'n/prefer-global/url-search-params': 'error',
43
+ 'n/prefer-node-protocol': 'error',
44
+ 'n/prefer-promises/dns': 'error',
45
+ 'n/prefer-promises/fs': 'error',
46
+ 'n/process-exit-as-throw': 'error'
47
+ }
48
+ };
@@ -20,14 +20,20 @@ export default {
20
20
  'perfectionist/sort-exports': ['error', SORT_OPTIONS],
21
21
  'perfectionist/sort-heritage-clauses': ['error', SORT_OPTIONS],
22
22
  'perfectionist/sort-import-attributes': ['error', SORT_OPTIONS],
23
- 'perfectionist/sort-imports': ['error', SORT_OPTIONS],
23
+ // Import-statement ordering is owned by `import-x/order` (configured with
24
+ // project path groups); the two disagree on type-import placement and group
25
+ // spacing, so keep this off to avoid an unresolvable conflict. Named-specifier
26
+ // sorting (`sort-named-imports`) is a separate concern and stays on.
27
+ 'perfectionist/sort-imports': 'off',
24
28
  'perfectionist/sort-interfaces': ['error', SORT_OPTIONS],
25
29
  'perfectionist/sort-intersection-types': ['error', SORT_OPTIONS],
26
30
  'perfectionist/sort-maps': ['error', SORT_OPTIONS],
27
31
  'perfectionist/sort-named-exports': ['error', SORT_OPTIONS],
28
32
  'perfectionist/sort-named-imports': ['error', SORT_OPTIONS],
29
33
  'perfectionist/sort-object-types': ['error', SORT_OPTIONS],
30
- 'perfectionist/sort-objects': ['error', SORT_OPTIONS],
34
+ // Object-literal key order is owned by `sort-keys-shorthand` (shorthand-first);
35
+ // keep this off to avoid a conflicting second sorter on the same concern.
36
+ 'perfectionist/sort-objects': 'off',
31
37
  'perfectionist/sort-sets': ['error', SORT_OPTIONS],
32
38
  'perfectionist/sort-union-types': ['error', SORT_OPTIONS]
33
39
  }
@@ -0,0 +1,25 @@
1
+ export default {
2
+ rules: {
3
+ 'promise/always-return': ['error', {
4
+ ignoreLastCallback: true
5
+ }],
6
+ 'promise/avoid-new': 'off',
7
+ 'promise/catch-or-return': 'error',
8
+ 'promise/no-callback-in-promise': 'warn',
9
+ 'promise/no-multiple-resolved': 'error',
10
+ 'promise/no-native': 'off',
11
+ 'promise/no-nesting': 'warn',
12
+ 'promise/no-new-statics': 'error',
13
+ 'promise/no-promise-in-callback': 'warn',
14
+ 'promise/no-return-in-finally': 'error',
15
+ 'promise/no-return-wrap': 'error',
16
+ 'promise/param-names': 'error',
17
+ 'promise/prefer-await-to-callbacks': 'off',
18
+ 'promise/prefer-await-to-then': ['error', {
19
+ strict: true
20
+ }],
21
+ 'promise/prefer-catch': 'error',
22
+ 'promise/spec-only': 'error',
23
+ 'promise/valid-params': 'error'
24
+ }
25
+ };
@@ -0,0 +1,32 @@
1
+ export default {
2
+ rules: {
3
+ 'react-hooks/capitalized-calls': 'off',
4
+ 'react-hooks/config': 'error',
5
+ 'react-hooks/error-boundaries': 'error',
6
+ 'react-hooks/exhaustive-deps': 'warn',
7
+ 'react-hooks/exhaustive-effect-dependencies': 'off',
8
+ 'react-hooks/fbt': 'off',
9
+ 'react-hooks/gating': 'error',
10
+ 'react-hooks/globals': 'error',
11
+ 'react-hooks/hooks': 'off',
12
+ 'react-hooks/immutability': 'error',
13
+ 'react-hooks/incompatible-library': 'warn',
14
+ 'react-hooks/invariant': 'off',
15
+ 'react-hooks/memo-dependencies': 'off',
16
+ 'react-hooks/memoized-effect-dependencies': 'off',
17
+ 'react-hooks/no-deriving-state-in-effects': 'off',
18
+ 'react-hooks/preserve-manual-memoization': 'error',
19
+ 'react-hooks/purity': 'error',
20
+ 'react-hooks/refs': 'off',
21
+ 'react-hooks/rule-suppression': 'off',
22
+ 'react-hooks/rules-of-hooks': 'error',
23
+ 'react-hooks/set-state-in-effect': 'error',
24
+ 'react-hooks/set-state-in-render': 'error',
25
+ 'react-hooks/static-components': 'error',
26
+ 'react-hooks/syntax': 'off',
27
+ 'react-hooks/todo': 'off',
28
+ 'react-hooks/unsupported-syntax': 'warn',
29
+ 'react-hooks/use-memo': 'error',
30
+ 'react-hooks/void-use-memo': 'error'
31
+ }
32
+ };
@@ -0,0 +1,91 @@
1
+ export default {
2
+ rules: {
3
+ '@eslint-react/dom-no-dangerously-set-innerhtml': 'error',
4
+ '@eslint-react/dom-no-dangerously-set-innerhtml-with-children': 'error',
5
+ '@eslint-react/dom-no-find-dom-node': 'error',
6
+ '@eslint-react/dom-no-flush-sync': 'error',
7
+ '@eslint-react/dom-no-hydrate': 'error',
8
+ '@eslint-react/dom-no-missing-button-type': 'error',
9
+ '@eslint-react/dom-no-missing-iframe-sandbox': 'error',
10
+ '@eslint-react/dom-no-render': 'error',
11
+ '@eslint-react/dom-no-render-return-value': 'error',
12
+ '@eslint-react/dom-no-script-url': 'error',
13
+ '@eslint-react/dom-no-string-style-prop': 'error',
14
+ '@eslint-react/dom-no-unknown-property': 'error',
15
+ '@eslint-react/dom-no-unsafe-iframe-sandbox': 'error',
16
+ '@eslint-react/dom-no-unsafe-target-blank': 'error',
17
+ '@eslint-react/dom-no-use-form-state': 'error',
18
+ '@eslint-react/dom-no-void-elements-with-children': 'error',
19
+ '@eslint-react/error-boundaries': 'off',
20
+ '@eslint-react/exhaustive-deps': 'off',
21
+ '@eslint-react/globals': 'off',
22
+ '@eslint-react/immutability': 'off',
23
+ '@eslint-react/jsx-no-children-prop': 'error',
24
+ '@eslint-react/jsx-no-children-prop-with-children': 'error',
25
+ '@eslint-react/jsx-no-comment-textnodes': 'error',
26
+ '@eslint-react/jsx-no-key-after-spread': 'error',
27
+ '@eslint-react/jsx-no-leaked-dollar': 'warn',
28
+ '@eslint-react/jsx-no-leaked-semicolon': 'off',
29
+ '@eslint-react/jsx-no-namespace': 'error',
30
+ '@eslint-react/jsx-no-useless-fragment': 'error',
31
+ '@eslint-react/naming-convention-context-name': 'error',
32
+ '@eslint-react/naming-convention-id-name': 'error',
33
+ '@eslint-react/naming-convention-ref-name': 'error',
34
+ '@eslint-react/no-access-state-in-setstate': 'error',
35
+ '@eslint-react/no-array-index-key': 'error',
36
+ '@eslint-react/no-children-count': 'error',
37
+ '@eslint-react/no-children-for-each': 'error',
38
+ '@eslint-react/no-children-map': 'error',
39
+ '@eslint-react/no-children-only': 'error',
40
+ '@eslint-react/no-children-to-array': 'error',
41
+ '@eslint-react/no-class-component': 'error',
42
+ '@eslint-react/no-clone-element': 'error',
43
+ '@eslint-react/no-component-will-mount': 'error',
44
+ '@eslint-react/no-component-will-receive-props': 'error',
45
+ '@eslint-react/no-component-will-update': 'error',
46
+ '@eslint-react/no-context-provider': 'error',
47
+ '@eslint-react/no-create-ref': 'error',
48
+ '@eslint-react/no-direct-mutation-state': 'error',
49
+ '@eslint-react/no-duplicate-key': 'error',
50
+ '@eslint-react/no-forward-ref': 'error',
51
+ '@eslint-react/no-implicit-children': 'off',
52
+ '@eslint-react/no-implicit-key': 'off',
53
+ '@eslint-react/no-implicit-ref': 'off',
54
+ '@eslint-react/no-leaked-conditional-rendering': 'off',
55
+ '@eslint-react/no-missing-component-display-name': 'off',
56
+ '@eslint-react/no-missing-context-display-name': 'off',
57
+ '@eslint-react/no-missing-key': 'error',
58
+ '@eslint-react/no-misused-capture-owner-stack': 'error',
59
+ '@eslint-react/no-nested-component-definitions': 'error',
60
+ '@eslint-react/no-nested-lazy-component-declarations': 'error',
61
+ '@eslint-react/no-set-state-in-component-did-mount': 'error',
62
+ '@eslint-react/no-set-state-in-component-did-update': 'error',
63
+ '@eslint-react/no-set-state-in-component-will-update': 'error',
64
+ '@eslint-react/no-unnecessary-use-prefix': 'error',
65
+ '@eslint-react/no-unsafe-component-will-mount': 'warn',
66
+ '@eslint-react/no-unsafe-component-will-receive-props': 'warn',
67
+ '@eslint-react/no-unsafe-component-will-update': 'warn',
68
+ '@eslint-react/no-unstable-context-value': 'error',
69
+ '@eslint-react/no-unstable-default-props': 'error',
70
+ '@eslint-react/no-unused-class-component-members': 'error',
71
+ '@eslint-react/no-unused-props': 'off',
72
+ '@eslint-react/no-unused-state': 'error',
73
+ '@eslint-react/no-use-context': 'warn',
74
+ '@eslint-react/purity': 'off',
75
+ '@eslint-react/refs': 'off',
76
+ '@eslint-react/rsc-function-definition': 'error',
77
+ '@eslint-react/rules-of-hooks': 'off',
78
+ '@eslint-react/set-state-in-effect': 'off',
79
+ '@eslint-react/set-state-in-render': 'off',
80
+ '@eslint-react/static-components': 'off',
81
+ '@eslint-react/unsupported-syntax': 'off',
82
+ '@eslint-react/use-memo': 'off',
83
+ '@eslint-react/use-state': 'error',
84
+ '@eslint-react/web-api-no-leaked-event-listener': 'warn',
85
+ '@eslint-react/web-api-no-leaked-fetch': 'warn',
86
+ '@eslint-react/web-api-no-leaked-intersection-observer': 'warn',
87
+ '@eslint-react/web-api-no-leaked-interval': 'warn',
88
+ '@eslint-react/web-api-no-leaked-resize-observer': 'warn',
89
+ '@eslint-react/web-api-no-leaked-timeout': 'warn'
90
+ }
91
+ };
@@ -0,0 +1,86 @@
1
+ export default {
2
+ rules: {
3
+ 'regexp/confusing-quantifier': 'warn',
4
+ 'regexp/control-character-escape': 'error',
5
+ 'regexp/grapheme-string-literal': 'off',
6
+ 'regexp/hexadecimal-escape': ['error', 'never'],
7
+ 'regexp/letter-case': 'error',
8
+ 'regexp/match-any': 'error',
9
+ 'regexp/negation': 'error',
10
+ 'regexp/no-contradiction-with-assertion': 'error',
11
+ 'regexp/no-control-character': 'error',
12
+ 'regexp/no-dupe-characters-character-class': 'error',
13
+ 'regexp/no-dupe-disjunctions': 'error',
14
+ 'regexp/no-empty-alternative': 'error',
15
+ 'regexp/no-empty-capturing-group': 'error',
16
+ 'regexp/no-empty-character-class': 'error',
17
+ 'regexp/no-empty-group': 'error',
18
+ 'regexp/no-empty-lookarounds-assertion': 'error',
19
+ 'regexp/no-empty-string-literal': 'error',
20
+ 'regexp/no-escape-backspace': 'error',
21
+ 'regexp/no-extra-lookaround-assertions': 'error',
22
+ 'regexp/no-invalid-regexp': 'error',
23
+ 'regexp/no-invisible-character': 'error',
24
+ 'regexp/no-lazy-ends': 'warn',
25
+ 'regexp/no-legacy-features': 'error',
26
+ 'regexp/no-misleading-capturing-group': 'error',
27
+ 'regexp/no-misleading-unicode-character': 'error',
28
+ 'regexp/no-missing-g-flag': 'error',
29
+ 'regexp/no-non-standard-flag': 'error',
30
+ 'regexp/no-obscure-range': 'error',
31
+ 'regexp/no-octal': 'error',
32
+ 'regexp/no-optional-assertion': 'error',
33
+ 'regexp/no-potentially-useless-backreference': 'warn',
34
+ 'regexp/no-standalone-backslash': 'error',
35
+ 'regexp/no-super-linear-backtracking': 'error',
36
+ 'regexp/no-super-linear-move': 'error',
37
+ 'regexp/no-trivially-nested-assertion': 'error',
38
+ 'regexp/no-trivially-nested-quantifier': 'error',
39
+ 'regexp/no-unused-capturing-group': 'error',
40
+ 'regexp/no-useless-assertions': 'error',
41
+ 'regexp/no-useless-backreference': 'error',
42
+ 'regexp/no-useless-character-class': 'error',
43
+ 'regexp/no-useless-dollar-replacements': 'error',
44
+ 'regexp/no-useless-escape': 'off',
45
+ 'regexp/no-useless-flag': 'error',
46
+ 'regexp/no-useless-lazy': 'error',
47
+ 'regexp/no-useless-non-capturing-group': 'error',
48
+ 'regexp/no-useless-quantifier': 'error',
49
+ 'regexp/no-useless-range': 'error',
50
+ 'regexp/no-useless-set-operand': 'error',
51
+ 'regexp/no-useless-string-literal': 'error',
52
+ 'regexp/no-useless-two-nums-quantifier': 'error',
53
+ 'regexp/no-zero-quantifier': 'error',
54
+ 'regexp/optimal-lookaround-quantifier': 'warn',
55
+ 'regexp/optimal-quantifier-concatenation': 'error',
56
+ 'regexp/prefer-character-class': 'error',
57
+ 'regexp/prefer-d': 'error',
58
+ 'regexp/prefer-escape-replacement-dollar-char': 'error',
59
+ 'regexp/prefer-lookaround': 'warn',
60
+ 'regexp/prefer-named-backreference': 'error',
61
+ 'regexp/prefer-named-capture-group': 'warn',
62
+ 'regexp/prefer-named-replacement': 'error',
63
+ 'regexp/prefer-plus-quantifier': 'error',
64
+ 'regexp/prefer-predefined-assertion': 'error',
65
+ 'regexp/prefer-quantifier': 'error',
66
+ 'regexp/prefer-question-quantifier': 'error',
67
+ 'regexp/prefer-range': 'error',
68
+ 'regexp/prefer-regexp-exec': 'error',
69
+ 'regexp/prefer-regexp-test': 'error',
70
+ 'regexp/prefer-result-array-groups': 'error',
71
+ 'regexp/prefer-set-operation': 'error',
72
+ 'regexp/prefer-star-quantifier': 'error',
73
+ 'regexp/prefer-unicode-codepoint-escapes': 'error',
74
+ 'regexp/prefer-w': 'error',
75
+ 'regexp/require-unicode-regexp': 'error',
76
+ 'regexp/require-unicode-sets-regexp': 'off',
77
+ 'regexp/simplify-set-operations': 'error',
78
+ 'regexp/sort-alternatives': 'error',
79
+ 'regexp/sort-character-class-elements': 'error',
80
+ 'regexp/sort-flags': 'error',
81
+ 'regexp/strict': 'error',
82
+ 'regexp/unicode-escape': ['error', 'unicodeCodePointEscape'],
83
+ 'regexp/unicode-property': 'error',
84
+ 'regexp/use-ignore-case': 'error'
85
+ }
86
+ };
@@ -0,0 +1,177 @@
1
+ export default {
2
+ rules: {
3
+ '@stylistic/array-bracket-newline': ['error', 'consistent'],
4
+ '@stylistic/array-bracket-spacing': ['error', 'never', {
5
+ arraysInArrays: false,
6
+ objectsInArrays: false,
7
+ singleValue: false
8
+ }],
9
+ '@stylistic/array-element-newline': ['error', 'consistent'],
10
+ '@stylistic/arrow-parens': ['error', 'as-needed', {
11
+ requireForBlockBody: false
12
+ }],
13
+ '@stylistic/arrow-spacing': ['error', {
14
+ after: true,
15
+ before: true
16
+ }],
17
+ '@stylistic/block-spacing': ['error', 'always'],
18
+ '@stylistic/brace-style': ['error', '1tbs', {
19
+ allowSingleLine: false
20
+ }],
21
+ '@stylistic/comma-dangle': ['error', 'never'],
22
+ '@stylistic/comma-spacing': ['error', {
23
+ after: true,
24
+ before: false
25
+ }],
26
+ '@stylistic/comma-style': ['error', 'last'],
27
+ '@stylistic/computed-property-spacing': ['error', 'never', {
28
+ enforceForClassMembers: true
29
+ }],
30
+ '@stylistic/dot-location': ['error', 'property'],
31
+ '@stylistic/eol-last': ['error', 'always'],
32
+ '@stylistic/function-call-argument-newline': ['error', 'consistent'],
33
+ '@stylistic/function-call-spacing': ['error', 'never'],
34
+ '@stylistic/function-paren-newline': ['error', 'multiline-arguments'],
35
+ '@stylistic/generator-star-spacing': ['error', {
36
+ after: true,
37
+ before: true
38
+ }],
39
+ '@stylistic/implicit-arrow-linebreak': ['error', 'beside'],
40
+ '@stylistic/indent': ['error', 2],
41
+ '@stylistic/jsx-quotes': ['error', 'prefer-double'],
42
+ '@stylistic/key-spacing': ['error', {
43
+ afterColon: true,
44
+ beforeColon: false
45
+ }],
46
+ '@stylistic/keyword-spacing': ['error', {
47
+ after: true,
48
+ before: true
49
+ }],
50
+ '@stylistic/line-comment-position': 'off',
51
+ '@stylistic/linebreak-style': ['error', 'unix'],
52
+ '@stylistic/lines-around-comment': 'off',
53
+ '@stylistic/lines-between-class-members': ['error', 'always', {
54
+ exceptAfterSingleLine: true
55
+ }],
56
+ '@stylistic/max-len': ['error', {
57
+ code: 120,
58
+ comments: 120,
59
+ ignoreComments: false,
60
+ ignoreRegExpLiterals: false,
61
+ ignoreStrings: false,
62
+ ignoreTemplateLiterals: false,
63
+ ignoreTrailingComments: false,
64
+ ignoreUrls: false,
65
+ tabWidth: 2
66
+ }],
67
+ '@stylistic/max-statements-per-line': ['error', {
68
+ max: 1
69
+ }],
70
+ '@stylistic/multiline-comment-style': 'off',
71
+ '@stylistic/multiline-ternary': 'off',
72
+ '@stylistic/new-parens': ['error', 'always'],
73
+ '@stylistic/newline-per-chained-call': ['error', {
74
+ ignoreChainWithDepth: 3
75
+ }],
76
+ '@stylistic/no-confusing-arrow': ['error', {
77
+ allowParens: true,
78
+ onlyOneSimpleParam: false
79
+ }],
80
+ '@stylistic/no-extra-parens': 'off', // TODO: Reconsider
81
+ '@stylistic/no-extra-semi': 'error',
82
+ '@stylistic/no-floating-decimal': 'error',
83
+ '@stylistic/no-mixed-operators': ['error', {
84
+ allowSamePrecedence: true
85
+ }],
86
+ '@stylistic/no-mixed-spaces-and-tabs': 'error',
87
+ '@stylistic/no-multi-spaces': ['error', {
88
+ exceptions: {
89
+ Property: false
90
+ }
91
+ }],
92
+ '@stylistic/no-multiple-empty-lines': ['error', {
93
+ max: 1,
94
+ maxBOF: 0,
95
+ maxEOF: 1
96
+ }],
97
+ '@stylistic/no-tabs': ['error', {
98
+ allowIndentationTabs: false
99
+ }],
100
+ '@stylistic/no-trailing-spaces': ['error', {
101
+ ignoreComments: false,
102
+ skipBlankLines: false
103
+ }],
104
+ '@stylistic/no-whitespace-before-property': 'error',
105
+ '@stylistic/nonblock-statement-body-position': 'off',
106
+ '@stylistic/object-curly-newline': 'off',
107
+ '@stylistic/object-curly-spacing': ['error', 'never', {
108
+ arraysInObjects: false,
109
+ objectsInObjects: false
110
+ }],
111
+ '@stylistic/object-property-newline': 'off', // Reconsider
112
+ '@stylistic/one-var-declaration-per-line': 'off',
113
+ '@stylistic/operator-linebreak': ['error', 'after'],
114
+ '@stylistic/padded-blocks': ['error', 'never', {
115
+ allowSingleLineBlocks: false
116
+ }],
117
+ '@stylistic/padding-line-between-statements': ['error', {
118
+ blankLine: 'always',
119
+ next: '*',
120
+ prev: 'multiline-block-like'
121
+ }],
122
+ '@stylistic/quote-props': ['error', 'as-needed', {
123
+ keywords: false,
124
+ numbers: true,
125
+ unnecessary: true
126
+ }],
127
+ '@stylistic/quotes': ['error', 'single', {
128
+ allowTemplateLiterals: 'never',
129
+ avoidEscape: true
130
+ }],
131
+ '@stylistic/rest-spread-spacing': ['error', 'never'],
132
+ '@stylistic/semi': ['error', 'always', {
133
+ omitLastInOneLineBlock: false
134
+ }],
135
+ '@stylistic/semi-spacing': ['error', {
136
+ after: true,
137
+ before: false
138
+ }],
139
+ '@stylistic/semi-style': ['error', 'last'],
140
+ '@stylistic/space-before-blocks': ['error', 'always'],
141
+ '@stylistic/space-before-function-paren': ['error', {
142
+ anonymous: 'always',
143
+ asyncArrow: 'always',
144
+ named: 'never'
145
+ }],
146
+ '@stylistic/space-in-parens': ['error', 'never'],
147
+ '@stylistic/space-infix-ops': ['error', {
148
+ int32Hint: false
149
+ }],
150
+ '@stylistic/space-unary-ops': ['error', {
151
+ nonwords: false,
152
+ words: true
153
+ }],
154
+ '@stylistic/spaced-comment': ['error', 'always', {
155
+ block: {
156
+ balanced: true,
157
+ exceptions: ['-', '+', '*'],
158
+ markers: ['!', '*']
159
+ },
160
+ line: {
161
+ exceptions: ['-', '+', '*'],
162
+ markers: ['!', '/', '=>']
163
+ }
164
+ }],
165
+ '@stylistic/switch-colon-spacing': ['error', {
166
+ after: true,
167
+ before: false
168
+ }],
169
+ '@stylistic/template-curly-spacing': ['error', 'never'],
170
+ '@stylistic/template-tag-spacing': ['error', 'never'],
171
+ '@stylistic/wrap-iife': ['error', 'inside', {
172
+ functionPrototypeMethods: true
173
+ }],
174
+ '@stylistic/wrap-regex': 'off',
175
+ '@stylistic/yield-star-spacing': ['error', 'both']
176
+ }
177
+ };
@@ -32,7 +32,7 @@ export default {
32
32
  '@typescript-eslint/consistent-type-definitions': 'off', // TODO: Reconsider
33
33
  '@typescript-eslint/consistent-type-exports': 'off', // TODO: Reconsider
34
34
  '@typescript-eslint/consistent-type-imports': 'off', // TODO: Reconsider
35
- '@typescript-eslint/default-param-last': 'off',
35
+ '@typescript-eslint/default-param-last': 'error',
36
36
  '@typescript-eslint/dot-notation': ['error', {
37
37
  allowIndexSignaturePropertyAccess: false,
38
38
  allowKeywords: true,