11import type { FlatESLintConfigItem } from 'eslint-define-config'
2- import { packages } from '@eslint-stylistic/metadata'
3- import { pluginStylisticJs , pluginStylisticTs , pluginTs } from '../plugins'
4- import { OFF } from '../flags'
5-
6- const tsPackage = packages . find ( i => i . shortId === 'ts' ) !
2+ import { pluginStylistic } from '../plugins'
73
84export const javascriptStylistic : FlatESLintConfigItem [ ] = [
95 {
106 plugins : {
11- style : pluginStylisticJs ,
7+ style : pluginStylistic ,
128 } ,
139 rules : {
1410 'antfu/consistent-list-newline' : 'error' ,
1511 'antfu/if-newline' : 'error' ,
1612
17- 'comma-dangle' : [ 'error' , 'always-multiline' ] ,
1813 'curly' : [ 'error' , 'multi-or-nest' , 'consistent' ] ,
19- 'quotes' : [ 'error' , 'single' ] ,
20- 'semi' : [ 'error' , 'never' ] ,
2114
2215 'style/array-bracket-spacing' : [ 'error' , 'never' ] ,
2316 'style/arrow-spacing' : [ 'error' , { after : true , before : true } ] ,
2417 'style/block-spacing' : [ 'error' , 'always' ] ,
2518 'style/brace-style' : [ 'error' , 'stroustrup' , { allowSingleLine : true } ] ,
19+ 'style/comma-dangle' : [ 'error' , 'always-multiline' ] ,
2620 'style/comma-spacing' : [ 'error' , { after : true , before : false } ] ,
2721 'style/comma-style' : [ 'error' , 'last' ] ,
2822 'style/computed-property-spacing' : [ 'error' , 'never' , { enforceForClassMembers : true } ] ,
@@ -68,6 +62,7 @@ export const javascriptStylistic: FlatESLintConfigItem[] = [
6862 'style/key-spacing' : [ 'error' , { afterColon : true , beforeColon : false } ] ,
6963 'style/keyword-spacing' : [ 'error' , { after : true , before : true } ] ,
7064 'style/lines-between-class-members' : [ 'error' , 'always' , { exceptAfterSingleLine : true } ] ,
65+ 'style/member-delimiter-style' : [ 'error' , { multiline : { delimiter : 'none' } } ] ,
7166 'style/multiline-ternary' : [ 'error' , 'always-multiline' ] ,
7267 'style/no-mixed-spaces-and-tabs' : 'error' ,
7368 'style/no-multi-spaces' : 'error' ,
@@ -79,7 +74,9 @@ export const javascriptStylistic: FlatESLintConfigItem[] = [
7974 'style/object-property-newline' : [ 'error' , { allowMultiplePropertiesPerLine : true } ] ,
8075 'style/operator-linebreak' : [ 'error' , 'before' ] ,
8176 'style/padded-blocks' : [ 'error' , { blocks : 'never' , classes : 'never' , switches : 'never' } ] ,
77+ 'style/quotes' : [ 'error' , 'single' ] ,
8278 'style/rest-spread-spacing' : [ 'error' , 'never' ] ,
79+ 'style/semi' : [ 'error' , 'never' ] ,
8380 'style/semi-spacing' : [ 'error' , { after : true , before : false } ] ,
8481 'style/space-before-blocks' : [ 'error' , 'always' ] ,
8582 'style/space-before-function-paren' : [ 'error' , { anonymous : 'always' , asyncArrow : 'always' , named : 'never' } ] ,
@@ -99,62 +96,8 @@ export const javascriptStylistic: FlatESLintConfigItem[] = [
9996 } ] ,
10097 'style/template-curly-spacing' : 'error' ,
10198 'style/template-tag-spacing' : [ 'error' , 'never' ] ,
99+ 'style/type-annotation-spacing' : [ 'error' , { } ] ,
102100 'style/yield-star-spacing' : [ 'error' , 'both' ] ,
103101 } ,
104102 } ,
105103]
106-
107- export const typescriptStylistic : FlatESLintConfigItem [ ] = [
108- {
109- plugins : {
110- 'style-ts' : pluginStylisticTs ,
111- 'ts' : pluginTs as any ,
112- } ,
113- rules : {
114- ...stylisticJsToTS ( javascriptStylistic [ 0 ] . rules ! ) ,
115-
116- 'comma-dangle' : OFF ,
117- 'quotes' : OFF ,
118- 'semi' : OFF ,
119-
120- 'style-ts/member-delimiter-style' : [ 'error' , { multiline : { delimiter : 'none' } } ] ,
121- 'style-ts/type-annotation-spacing' : [ 'error' , { } ] ,
122-
123- 'ts/comma-dangle' : [ 'error' , 'always-multiline' ] ,
124- 'ts/quotes' : [ 'error' , 'single' ] ,
125- 'ts/semi' : [ 'error' , 'never' ] ,
126- } ,
127- } ,
128- ]
129-
130- // TODO: move to ESLint Stylistic
131- function stylisticJsToTS ( input : Record < string , any > ) {
132- return {
133- // turn off all stylistic rules from style
134- ...Object . fromEntries (
135- Object . entries ( input )
136- . map ( ( [ key ] ) => {
137- if ( ! key . startsWith ( 'style/' ) )
138- return null !
139- const basename = key . replace ( 'style/' , '' )
140- if ( tsPackage . rules . find ( i => i . name === basename ) )
141- return [ key , OFF ]
142- return null !
143- } )
144- . filter ( Boolean ) ,
145- ) ,
146- // rename all stylistic rules from style to style/ts
147- ...Object . fromEntries (
148- Object . entries ( input )
149- . map ( ( [ key , value ] ) => {
150- if ( ! key . startsWith ( 'style/' ) )
151- return null !
152- const basename = key . replace ( 'style/' , '' )
153- return tsPackage . rules . find ( i => i . name === basename )
154- ? [ `style-ts/${ basename } ` , value ]
155- : null !
156- } )
157- . filter ( Boolean ) ,
158- ) ,
159- }
160- }
0 commit comments