eslint-plugin-putout 24.0.3 → 25.0.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.
package/README.md CHANGED
@@ -17,13 +17,12 @@ npm i putout eslint eslint-plugin-putout -D
17
17
 
18
18
  ## Usage
19
19
 
20
- Add `putout` to the plugins section of your `.eslintrc.json` configuration file. You can omit the `eslint-plugin-` prefix:
20
+ Update `eslint.config.js` with:
21
21
 
22
- ```json
23
- {
24
- "extends": ["plugin:putout/recommended"],
25
- "plugins": ["putout"]
26
- }
22
+ ```js
23
+ import {recommended} from 'eslint-plugin-putout';
24
+
25
+ export default recommended;
27
26
  ```
28
27
 
29
28
  Then configure the rules you want to use under the rules section.
@@ -117,11 +116,10 @@ Then configure the rules you want to use under the rules section.
117
116
 
118
117
  When using 🐊**Putout** in IDE with `--fix` on save, or when you want to disable the most dangerous rules, use:
119
118
 
120
- ```json
121
- {
122
- "extends": ["plugin:putout/safe"],
123
- "plugins": ["putout"]
124
- }
119
+ ```js
120
+ import {safe} from 'eslint-plugin-putout';
121
+
122
+ export default safe;
125
123
  ```
126
124
 
127
125
  Disabled **ESLint** rules:
@@ -153,24 +151,20 @@ Disabled 🐊**Putout** rules:
153
151
  - ❌ [`for-of/remove-useless`](https://github.com/coderaiser/putout/tree/v29.7.1/packages/plugin-for-of#remove-useless);
154
152
  - ❌ [`for-of/remove-unused-variables`](https://github.com/coderaiser/putout/tree/29.7.1/packages/plugin-for-of#remove-unused-variables);
155
153
  - ❌ [`maybe/noop`](https://github.com/coderaiser/putout/tree/29.2.4/packages/plugin-maybe#noop);
154
+ - ❌ [`remove-useless-push`](https://github.com/coderaiser/putout/tree/38.1.2/packages/plugin-remove-useless-push#readme);
156
155
 
157
- ### safe+align
156
+ ### safeAlign
158
157
 
159
- When you want to enable ability to align spaces on empty lines, while have all benefits of `safe` preset: use `safe+align`.
158
+ When you want to enable ability to align spaces on empty lines, while have all benefits of `safe` preset: use `safeAlign`.
160
159
 
161
160
  ### jsx
162
161
 
163
162
  When you need to support `jsx` in files using `js` extension, use:
164
163
 
165
- ```json
166
- {
167
- "extends": [
168
- "plugin:putout/jsx"
169
- ],
170
- "plugins": [
171
- "putout"
172
- ]
173
- }
164
+ ```js
165
+ import {jsx} from 'eslint-plugin-putout;
166
+
167
+ export default jsx;
174
168
  ```
175
169
 
176
170
  ### esm
@@ -178,31 +172,11 @@ When you need to support `jsx` in files using `js` extension, use:
178
172
  If you want to use **ESM** plugins of 🐊**Putout** you need to use `esm` preset:
179
173
 
180
174
  ```json
181
- {
182
- "extends": [
183
- "plugin:putout/esm"
184
- ],
185
- "plugins": [
186
- "putout"
187
- ]
188
- }
189
- ```
175
+ import {esm} from 'eslint-plugin-putout;
190
176
 
191
- ## Flat
192
-
193
- The time is came for a [FlatConfig](https://eslint.org/blog/2022/08/new-config-system-part-2/). To use it with `eslint-plugin-putout` add to `eslint.config.js`:
194
-
195
- ```js
196
- const {recommended} = require('eslint-plugin-putout/config');
197
-
198
- module.exports = [
199
- ...recommended,
200
- {},
201
- ];
177
+ export default esm;
202
178
  ```
203
179
 
204
- `safe` and `safeAlign` supported as well.
205
-
206
180
  ## License
207
181
 
208
182
  MIT
package/lib/html.mjs ADDED
@@ -0,0 +1,11 @@
1
+ import globals from 'globals';
2
+
3
+ export default [{
4
+ name: 'putout: html: js',
5
+ files: ['**/*.html{js}'],
6
+ languageOptions: {
7
+ globals: {
8
+ ...globals.browser,
9
+ },
10
+ },
11
+ }];
@@ -1,65 +1,21 @@
1
- 'use strict';
1
+ import config from '@putout/eslint-config';
2
+ import nPlugin from 'eslint-plugin-n';
3
+ import markdown from './markdown.mjs';
4
+ import json from './json.mjs';
5
+ import html from './html.mjs';
6
+ import ts from './ts.mjs';
7
+ import jsxConfig, {jsx} from './jsx.mjs';
8
+ import putout from './plugin.js';
2
9
 
3
- const {createPlugin} = require('@putout/eslint/create-plugin');
10
+ const n = nPlugin.configs['flat/mixed-esm-and-cjs'];
4
11
 
5
- const config = require('@putout/eslint-config');
6
- const markdown = require('./markdown');
7
- const json = require('./json');
8
- const yaml = require('./yaml');
9
- const html = require('./html');
10
- const ts = require('./ts');
11
- const jsx = require('./jsx');
12
-
13
- const getRule = (a) => ({
14
- [a]: require(`./${a}`),
15
- });
16
-
17
- const getWrapRule = (a) => ({
18
- [a]: createPlugin(require(`./${a}`)),
19
- });
20
-
21
- module.exports.rules = {
22
- ...getWrapRule('array-element-newline'),
23
- ...getWrapRule('single-property-destructuring'),
24
- ...getWrapRule('multiple-properties-destructuring'),
25
- ...getWrapRule('for-of-multiple-properties-destructuring'),
26
- ...getWrapRule('long-properties-destructuring'),
27
- ...getWrapRule('destructuring-as-function-argument'),
28
- ...getWrapRule('align-spaces'),
29
- ...getWrapRule('keyword-spacing'),
30
- ...getWrapRule('newline-function-call-arguments'),
31
- ...getWrapRule('function-declaration-paren-newline'),
32
- ...getWrapRule('add-newlines-between-types-in-union'),
33
- ...getWrapRule('add-newlines-between-specifiers'),
34
- ...getWrapRule('add-newline-before-return'),
35
- ...getWrapRule('add-newline-before-function-call'),
36
- ...getWrapRule('add-newline-after-function-call'),
37
- ...getWrapRule('remove-newline-after-default-import'),
38
- ...getWrapRule('remove-newline-from-empty-object'),
39
- ...getWrapRule('remove-empty-newline-before-first-specifier'),
40
- ...getWrapRule('remove-empty-newline-after-last-specifier'),
41
- ...getWrapRule('remove-empty-newline-after-last-element'),
42
- ...getWrapRule('remove-empty-specifiers'),
43
- ...getWrapRule('objects-braces-inside-array'),
44
- ...getWrapRule('object-property-newline'),
45
- ...getWrapRule('no-unresolved'),
46
- ...getWrapRule('remove-duplicate-extensions'),
47
- ...getWrapRule('evaluate'),
48
- ...getWrapRule('tape-add-newline-before-assertion'),
49
- ...getWrapRule('tape-add-newline-between-tests'),
50
- ...getWrapRule('tape-remove-newline-before-t-end'),
51
- ...getWrapRule('nonblock-statement-body-newline'),
52
- ...getRule('putout'),
53
- ...getRule('remove-empty-newline-after-import'),
54
- ...getRule('remove-empty-newline-between-declarations'),
55
- };
56
-
57
- const {rules} = config;
58
-
59
- const recommended = {
60
- ...config,
12
+ const putoutConfig = [{
13
+ name: 'putout: js',
14
+ plugins: {
15
+ putout,
16
+ },
61
17
  rules: {
62
- ...rules,
18
+ ...config.rules,
63
19
  'no-debugger': 'off',
64
20
  'no-unused-vars': 'off',
65
21
  'putout/array-element-newline': 'error',
@@ -100,17 +56,20 @@ const recommended = {
100
56
  'n/no-missing-require': 'off',
101
57
  'n/no-process-exit': 'off',
102
58
  },
103
- overrides: [
104
- ...markdown,
105
- ...json,
106
- ...yaml,
107
- ...html,
108
- ...ts,
109
- ...jsx,
110
- ],
111
- };
59
+ }];
112
60
 
113
- const safeRules = {
61
+ export const recommended = [
62
+ ...n,
63
+ ...config,
64
+ ...putoutConfig,
65
+ ...markdown,
66
+ ...html,
67
+ ...ts,
68
+ ...jsxConfig,
69
+ ...json,
70
+ ];
71
+
72
+ export const safeRules = {
114
73
  'apply-template-literals': 'off',
115
74
  'remove-empty': 'off',
116
75
  'merge-duplicate-functions': 'off',
@@ -132,34 +91,36 @@ const safeRules = {
132
91
  'for-of/remove-unused-variables': 'off',
133
92
  'for-of/remove-useless': 'off',
134
93
  'maybe/noop': 'off',
94
+ 'remove-useless-push': 'off',
135
95
  };
136
96
 
137
- module.exports.safeRules = safeRules;
138
-
139
- const safe = {
140
- ...recommended,
141
- rules: {
142
- ...recommended.rules,
143
- 'no-implicit-coercion': 'off',
144
- 'no-useless-return': 'off',
145
- 'putout/align-spaces': 'off',
146
- 'putout/remove-newline-from-empty-object': 'off',
147
- 'putout/putout': ['error', {
148
- esm: false,
149
- rules: safeRules,
150
- }],
151
- },
152
- };
97
+ export const safe = [
98
+ ...n,
99
+ ...recommended, {
100
+ rules: {
101
+ ...recommended.rules,
102
+ 'no-implicit-coercion': 'off',
103
+ 'no-useless-return': 'off',
104
+ 'putout/align-spaces': 'off',
105
+ 'putout/remove-newline-from-empty-object': 'off',
106
+ 'putout/putout': ['error', {
107
+ esm: false,
108
+ rules: safeRules,
109
+ }],
110
+ },
111
+ }];
153
112
 
154
- const safeAlign = {
155
- ...safe,
156
- rules: {
157
- ...safe.rules,
158
- 'putout/align-spaces': 'error',
159
- },
160
- };
113
+ export const safeAlign = [
114
+ ...n,
115
+ ...safe, {
116
+ rules: {
117
+ ...safe.rules,
118
+ 'putout/align-spaces': 'error',
119
+ },
120
+ }];
161
121
 
162
- const esm = {
122
+ export const esm = {
123
+ ...n,
163
124
  ...safeAlign,
164
125
  rules: {
165
126
  ...safeAlign.rules,
@@ -170,10 +131,15 @@ const esm = {
170
131
  },
171
132
  };
172
133
 
173
- module.exports.configs = {
134
+ export const configs = {
174
135
  recommended,
175
- 'jsx': jsx.jsx,
136
+ jsx,
176
137
  safe,
177
- 'safe+align': safeAlign,
138
+ safeAlign,
178
139
  esm,
179
140
  };
141
+
142
+ export default {
143
+ rules: putout.rules,
144
+ configs,
145
+ };
@@ -1,9 +1,11 @@
1
- 'use strict';
1
+ import stylisticJs from '@stylistic/eslint-plugin-js';
2
+ import putout from './plugin.js';
2
3
 
3
- module.exports = [{
4
+ export default [{
5
+ name: 'putout: json',
4
6
  files: [
5
- '*.json',
6
- '*{json}',
7
+ '**/*.json',
8
+ '**/*{json}',
7
9
  ],
8
10
  rules: {
9
11
  'no-undef': 'off',
@@ -28,7 +30,8 @@ module.exports = [{
28
30
  '@stylistic/js/no-multi-spaces': 'off',
29
31
  },
30
32
  }, {
31
- files: 'package.json',
33
+ name: 'putout: json: package.json',
34
+ files: ['**/package.json'],
32
35
  rules: {
33
36
  '@stylistic/js/indent': [
34
37
  'error',
@@ -36,13 +39,21 @@ module.exports = [{
36
39
  ],
37
40
  },
38
41
  }, {
39
- files: '*ignore{json}',
42
+ name: 'putout: json: ignore',
43
+ files: ['**/*ignore{json}'],
40
44
  rules: {
41
45
  '@stylistic/js/comma-dangle': 'off',
42
46
  },
43
47
  }, {
44
- files: '*.yml{json}',
48
+ name: 'putout: json: yaml',
49
+ files: ['**/*.{yml,yaml}{json}'],
50
+ plugins: {
51
+ '@stylistic': stylisticJs,
52
+ putout,
53
+ },
45
54
  rules: {
55
+ 'putout/objects-braces-inside-array': 'off',
46
56
  '@stylistic/js/indent': 'off',
57
+ 'comma-spacing': 'off',
47
58
  },
48
59
  }];
@@ -1,6 +1,8 @@
1
- 'use strict';
1
+ import stylisticJsx from '@stylistic/eslint-plugin-jsx';
2
+ import react from 'eslint-plugin-react';
2
3
 
3
- const jsx = {
4
+ export const jsx = {
5
+ name: 'putout: jsx',
4
6
  rules: {
5
7
  '@stylistic/js/no-extra-parens': 'off',
6
8
  '@stylistic/jsx/jsx-indent': 'error',
@@ -10,7 +12,10 @@ const jsx = {
10
12
  declaration: 'parens-new-line',
11
13
  }],
12
14
  },
13
- plugins: ['react', '@stylistic/jsx'],
15
+ plugins: {
16
+ react,
17
+ '@stylistic/jsx': stylisticJsx,
18
+ },
14
19
  settings: {
15
20
  react: {
16
21
  version: 'latest',
@@ -18,9 +23,7 @@ const jsx = {
18
23
  },
19
24
  };
20
25
 
21
- module.exports = [{
22
- files: ['*.jsx'],
26
+ export default [{
27
+ files: ['**/*.jsx'],
23
28
  ...jsx,
24
29
  }];
25
-
26
- module.exports.jsx = jsx;
@@ -1,9 +1,10 @@
1
- 'use strict';
1
+ import parserOpts from '@putout/engine-parser/babel/options';
2
+ import parserPlugins from '@putout/engine-parser/babel/plugins';
3
+ import babel from '@babel/eslint-parser/experimental-worker';
4
+ import tsConfig from './ts.mjs';
5
+ import {jsx} from './jsx.mjs';
2
6
 
3
- const parserOpts = require('@putout/engine-parser/babel/options');
4
- const parserPlugins = require('@putout/engine-parser/babel/plugins');
5
- const [ts, tsx] = require('./ts');
6
- const {jsx} = require('./jsx');
7
+ const [ts, tsx] = tsConfig;
7
8
 
8
9
  const commonRules = {
9
10
  '@stylistic/js/eol-last': [
@@ -41,48 +42,59 @@ const parserOptions = {
41
42
  },
42
43
  };
43
44
 
44
- module.exports = [{
45
- files: ['*.md{js}'],
45
+ const mdTsCommonRules = {
46
+ '@typescript-eslint/no-unused-vars': 'off',
47
+ '@typescript-eslint/no-explicit-any': 'off',
48
+ '@typescript-eslint/no-inferrable-types': 'off',
49
+ };
50
+
51
+ export default [{
52
+ name: 'putout: md: js',
53
+ files: ['**/*.md{js}'],
46
54
  rules: commonRules,
47
- parser: '@babel/eslint-parser/experimental-worker',
48
- parserOptions,
55
+ languageOptions: {
56
+ parser: babel,
57
+ parserOptions,
58
+ },
49
59
  }, {
50
- files: ['*.md{jsx}'],
60
+ name: 'putout: md: jsx',
61
+ files: ['**/*.md{jsx}'],
51
62
  rules: {
52
63
  ...commonRules,
53
64
  ...jsx.rules,
54
65
  },
55
66
  plugins: jsx.plugins,
56
- parser: '@babel/eslint-parser/experimental-worker',
57
- parserOptions,
67
+ languageOptions: {
68
+ parser: babel,
69
+ parserOptions,
70
+ },
58
71
  }, {
59
72
  ...tsx,
60
73
  ...jsx,
61
- files: '*.md{tsx}',
74
+ name: 'putout: md: tsx',
75
+ files: ['**/*.md{tsx}'],
62
76
  rules: {
63
77
  ...commonRules,
64
78
  ...ts.rules,
65
79
  ...jsx.rules,
66
- '@typescript-eslint/no-unused-vars': 'off',
67
- '@typescript-eslint/no-explicit-any': 'off',
68
- '@typescript-eslint/no-inferrable-types': 'off',
80
+ ...mdTsCommonRules,
69
81
  },
70
- plugins: [
82
+ plugins: {
71
83
  ...tsx.plugins,
72
84
  ...jsx.plugins,
73
- ],
85
+ },
74
86
  }, {
75
87
  ...ts,
76
- files: '*.md{ts}',
88
+ name: 'putout: md: ts',
89
+ files: ['**/*.md{ts}'],
77
90
  rules: {
78
91
  ...commonRules,
79
92
  ...ts.rules,
80
- '@typescript-eslint/no-unused-vars': 'off',
81
- '@typescript-eslint/no-explicit-any': 'off',
82
- '@typescript-eslint/no-inferrable-types': 'off',
93
+ ...mdTsCommonRules,
83
94
  },
84
95
  }, {
85
- files: '*.md{json}',
96
+ name: 'putout: md: json',
97
+ files: ['**/*.md{json}'],
86
98
  rules: {
87
99
  '@stylistic/js/eol-last': [
88
100
  'error',
package/lib/plugin.js ADDED
@@ -0,0 +1,47 @@
1
+ 'use strict';
2
+
3
+ const {createPlugin} = require('@putout/eslint/create-plugin');
4
+
5
+ const getRule = (a) => ({
6
+ [a]: require(`./${a}`),
7
+ });
8
+
9
+ const getWrapRule = (a) => ({
10
+ [a]: createPlugin(require(`./${a}`)),
11
+ });
12
+
13
+ module.exports.rules = {
14
+ ...getWrapRule('array-element-newline'),
15
+ ...getWrapRule('single-property-destructuring'),
16
+ ...getWrapRule('multiple-properties-destructuring'),
17
+ ...getWrapRule('for-of-multiple-properties-destructuring'),
18
+ ...getWrapRule('long-properties-destructuring'),
19
+ ...getWrapRule('destructuring-as-function-argument'),
20
+ ...getWrapRule('align-spaces'),
21
+ ...getWrapRule('keyword-spacing'),
22
+ ...getWrapRule('newline-function-call-arguments'),
23
+ ...getWrapRule('function-declaration-paren-newline'),
24
+ ...getWrapRule('add-newlines-between-types-in-union'),
25
+ ...getWrapRule('add-newlines-between-specifiers'),
26
+ ...getWrapRule('add-newline-before-return'),
27
+ ...getWrapRule('add-newline-before-function-call'),
28
+ ...getWrapRule('add-newline-after-function-call'),
29
+ ...getWrapRule('remove-newline-after-default-import'),
30
+ ...getWrapRule('remove-newline-from-empty-object'),
31
+ ...getWrapRule('remove-empty-newline-before-first-specifier'),
32
+ ...getWrapRule('remove-empty-newline-after-last-specifier'),
33
+ ...getWrapRule('remove-empty-newline-after-last-element'),
34
+ ...getWrapRule('remove-empty-specifiers'),
35
+ ...getWrapRule('objects-braces-inside-array'),
36
+ ...getWrapRule('object-property-newline'),
37
+ ...getWrapRule('no-unresolved'),
38
+ ...getWrapRule('remove-duplicate-extensions'),
39
+ ...getWrapRule('evaluate'),
40
+ ...getWrapRule('tape-add-newline-before-assertion'),
41
+ ...getWrapRule('tape-add-newline-between-tests'),
42
+ ...getWrapRule('tape-remove-newline-before-t-end'),
43
+ ...getWrapRule('nonblock-statement-body-newline'),
44
+ ...getRule('putout'),
45
+ ...getRule('remove-empty-newline-after-import'),
46
+ ...getRule('remove-empty-newline-between-declarations'),
47
+ };
@@ -37,7 +37,7 @@ module.exports = ({context, options}) => {
37
37
 
38
38
  if (errorParser) {
39
39
  context.report({
40
- message: `${parseError(errorParser)} (putout)`,
40
+ message: `${parseError(errorParser)} (parser)`,
41
41
  node,
42
42
  });
43
43
 
@@ -1,7 +1,12 @@
1
- 'use strict';
1
+ import {rules} from '@putout/eslint-config';
2
+ import parser from '@typescript-eslint/parser';
3
+ import tseslint from 'typescript-eslint';
4
+ import tsPlugin from '@typescript-eslint/eslint-plugin';
5
+ import stylisticTs from '@stylistic/eslint-plugin-ts';
6
+ import {jsx} from './jsx.mjs';
7
+ import plugin from './plugin.js';
2
8
 
3
- const {rules} = require('@putout/eslint-config');
4
- const {jsx} = require('./jsx');
9
+ const {assign} = Object;
5
10
 
6
11
  const reEnable = (rule) => ({
7
12
  [`@stylistic/ts/${rule}`]: 'error',
@@ -70,18 +75,35 @@ const extensionRules = {
70
75
  '@typescript-eslint/no-unsafe-declaration-merging': 'error',
71
76
  };
72
77
 
78
+ const getTSESLintConfigs = (configs) => {
79
+ const result = {};
80
+
81
+ for (const config of configs) {
82
+ assign(result, config);
83
+ }
84
+
85
+ return result;
86
+ };
87
+
73
88
  const ts = {
74
- files: '*.ts',
75
- parser: '@typescript-eslint/parser',
76
- parserOptions: {
77
- warnOnUnsupportedTypeScriptVersion,
78
- ecmaFeatures: {
79
- jsx: false,
89
+ name: 'putout: ts',
90
+ files: ['**/*.ts'],
91
+ languageOptions: {
92
+ parser,
93
+ parserOptions: {
94
+ warnOnUnsupportedTypeScriptVersion,
95
+ ecmaFeatures: {
96
+ jsx: false,
97
+ },
80
98
  },
81
99
  },
82
- plugins: ['@typescript-eslint', '@stylistic/ts'],
83
- extends: ['plugin:@typescript-eslint/recommended'],
100
+ plugins: {
101
+ '@typescript-eslint': tsPlugin,
102
+ '@stylistic/ts': stylisticTs,
103
+ 'putout': plugin,
104
+ },
84
105
  rules: {
106
+ ...getTSESLintConfigs(tseslint.configs.recommended).rules,
85
107
  ...extensionRules,
86
108
  'putout/no-unresolved': 'off',
87
109
  '@typescript-eslint/no-explicit-any': 'off',
@@ -91,23 +113,27 @@ const ts = {
91
113
  },
92
114
  };
93
115
 
94
- module.exports = [
116
+ export default [
95
117
  ts, {
96
118
  ...ts,
97
119
  ...jsx,
120
+ name: 'putout: tsx',
121
+ files: ['**/*.tsx'],
98
122
  rules: {
99
- ...ts.rules,
100
123
  ...jsx.rules,
124
+ ...ts.rules,
101
125
  },
102
- plugins: [
103
- ...ts.plugins,
126
+ plugins: {
104
127
  ...jsx.plugins,
105
- ],
106
- files: '*.tsx',
107
- parserOptions: {
108
- warnOnUnsupportedTypeScriptVersion,
109
- ecmaFeatures: {
110
- jsx: true,
128
+ ...ts.plugins,
129
+ },
130
+ languageOptions: {
131
+ parser,
132
+ parserOptions: {
133
+ warnOnUnsupportedTypeScriptVersion,
134
+ ecmaFeatures: {
135
+ jsx: true,
136
+ },
111
137
  },
112
138
  },
113
139
  },
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "eslint-plugin-putout",
3
- "version": "24.0.3",
3
+ "version": "25.0.0",
4
4
  "type": "commonjs",
5
5
  "description": "ESLint plugin for 🐊Putout",
6
6
  "release": false,
@@ -12,8 +12,7 @@
12
12
  "url": "git+https://github.com/coderaiser/putout.git"
13
13
  },
14
14
  "exports": {
15
- ".": "./lib/index.js",
16
- "./config": "./lib/config/index.js"
15
+ ".": "./lib/index.mjs"
17
16
  },
18
17
  "keywords": [
19
18
  "putout",
@@ -43,19 +42,24 @@
43
42
  "@eslint/eslintrc": "^3.0.0",
44
43
  "@putout/engine-parser": "^12.0.0",
45
44
  "@putout/eslint": "^3.0.0",
46
- "@putout/eslint-config": "^9.0.0",
47
- "@stylistic/eslint-plugin-jsx": "^3.0.0",
48
- "@stylistic/eslint-plugin-ts": "^3.0.0",
45
+ "@putout/eslint-config": "^10.0.0",
46
+ "@putout/eslint-flat": "^2.0.0",
47
+ "@stylistic/eslint-plugin-js": "^4.0.1",
48
+ "@stylistic/eslint-plugin-jsx": "^4.0.1",
49
+ "@stylistic/eslint-plugin-ts": "^4.0.1",
49
50
  "@typescript-eslint/eslint-plugin": "^8.3.0",
50
51
  "@typescript-eslint/parser": "^8.3.0",
51
52
  "align-spaces": "^2.0.0",
52
53
  "eslint-plugin-n": "^17.0.0",
54
+ "eslint-plugin-putout": "^24.1.0",
53
55
  "eslint-plugin-react": "^7.32.2",
56
+ "globals": "^16.0.0",
54
57
  "parse-import-specifiers": "^1.0.1",
55
58
  "synckit": "^0.9.0",
56
59
  "try-catch": "^3.0.0",
57
60
  "try-to-catch": "^3.0.1",
58
- "typescript": "^5.0.4"
61
+ "typescript": "^5.0.4",
62
+ "typescript-eslint": "^8.24.1"
59
63
  },
60
64
  "devDependencies": {
61
65
  "@babel/plugin-syntax-typescript": "^8.0.0-alpha.1",
@@ -74,7 +78,7 @@
74
78
  "node": ">=18"
75
79
  },
76
80
  "peerDependencies": {
77
- "eslint": ">=8.0.0",
81
+ "eslint": ">=9",
78
82
  "putout": ">=38"
79
83
  },
80
84
  "license": "MIT",
@@ -1,39 +0,0 @@
1
- 'use strict';
2
-
3
- const nPlugin = require('eslint-plugin-n');
4
- const {FlatCompat} = require('@eslint/eslintrc');
5
- const putoutPlugin = require('..');
6
-
7
- const getPutoutConfig = (name) => compat.config(putoutPlugin.configs[name]);
8
-
9
- const compat = new FlatCompat({
10
- languageOptions: {
11
- baseDirectory: __dirname,
12
- },
13
- });
14
-
15
- const n = nPlugin.configs['flat/mixed-esm-and-cjs'];
16
-
17
- const plugins = [{
18
- plugins: {
19
- putout: putoutPlugin,
20
- },
21
- }];
22
-
23
- module.exports.recommended = [
24
- ...n,
25
- ...getPutoutConfig('recommended'),
26
- ...plugins,
27
- ];
28
-
29
- module.exports.safe = [
30
- ...n,
31
- ...getPutoutConfig('safe'),
32
- ...plugins,
33
- ];
34
-
35
- module.exports.safeAlign = [
36
- ...n,
37
- ...getPutoutConfig('safe+align'),
38
- ...plugins,
39
- ];
package/lib/html.js DELETED
@@ -1,8 +0,0 @@
1
- 'use strict';
2
-
3
- module.exports = [{
4
- files: ['*.html{js}'],
5
- env: {
6
- browser: true,
7
- },
8
- }];
package/lib/yaml.js DELETED
@@ -1,9 +0,0 @@
1
- 'use strict';
2
-
3
- module.exports = [{
4
- files: '*.{yml,yaml}{json}',
5
- rules: {
6
- 'comma-spacing': 'off',
7
- 'putout/objects-braces-inside-array': 'off',
8
- },
9
- }];