@chanyuxi/eslint-waltz 1.3.1 → 1.4.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/dist/index.js +246 -73
- package/dist/types.d.ts +7 -0
- package/package.json +4 -4
package/dist/index.js
CHANGED
|
@@ -771,74 +771,6 @@ async function reactConfig(options = {}, scriptScope) {
|
|
|
771
771
|
async function stylisticConfig(options = {}, scriptScope) {
|
|
772
772
|
const eslintStylistic = await importStylisticPlugin();
|
|
773
773
|
const ruleFiles = resolveFiles(options.files, getScriptFiles(scriptScope));
|
|
774
|
-
// Directly use the generated recommendation rules
|
|
775
|
-
const configs = eslintStylistic.configs.customize();
|
|
776
|
-
// This will enable the following rules.
|
|
777
|
-
// '@stylistic/array-bracket-spacing'
|
|
778
|
-
// '@stylistic/arrow-parens'
|
|
779
|
-
// '@stylistic/arrow-spacing'
|
|
780
|
-
// '@stylistic/block-spacing'
|
|
781
|
-
// '@stylistic/brace-style'
|
|
782
|
-
// '@stylistic/comma-dangle'
|
|
783
|
-
// '@stylistic/comma-spacing'
|
|
784
|
-
// '@stylistic/comma-style'
|
|
785
|
-
// '@stylistic/computed-property-spacing'
|
|
786
|
-
// '@stylistic/dot-location'
|
|
787
|
-
// '@stylistic/eol-last'
|
|
788
|
-
// '@stylistic/generator-star-spacing'
|
|
789
|
-
// '@stylistic/indent'
|
|
790
|
-
// '@stylistic/indent-binary-ops'
|
|
791
|
-
// '@stylistic/key-spacing'
|
|
792
|
-
// '@stylistic/keyword-spacing'
|
|
793
|
-
// '@stylistic/lines-between-class-members'
|
|
794
|
-
// '@stylistic/max-statements-per-line'
|
|
795
|
-
// '@stylistic/member-delimiter-style'
|
|
796
|
-
// '@stylistic/multiline-ternary'
|
|
797
|
-
// '@stylistic/new-parens'
|
|
798
|
-
// '@stylistic/no-extra-parens'
|
|
799
|
-
// '@stylistic/no-floating-decimal'
|
|
800
|
-
// '@stylistic/no-mixed-operators'
|
|
801
|
-
// '@stylistic/no-mixed-spaces-and-tabs'
|
|
802
|
-
// '@stylistic/no-multi-spaces'
|
|
803
|
-
// '@stylistic/no-multiple-empty-lines'
|
|
804
|
-
// '@stylistic/no-tabs'
|
|
805
|
-
// '@stylistic/no-trailing-spaces'
|
|
806
|
-
// '@stylistic/no-whitespace-before-property'
|
|
807
|
-
// '@stylistic/object-curly-spacing'
|
|
808
|
-
// '@stylistic/operator-linebreak'
|
|
809
|
-
// '@stylistic/padded-blocks'
|
|
810
|
-
// '@stylistic/quote-props'
|
|
811
|
-
// '@stylistic/quotes'
|
|
812
|
-
// '@stylistic/rest-spread-spacing'
|
|
813
|
-
// '@stylistic/semi'
|
|
814
|
-
// '@stylistic/semi-spacing'
|
|
815
|
-
// '@stylistic/space-before-blocks'
|
|
816
|
-
// '@stylistic/space-before-function-paren'
|
|
817
|
-
// '@stylistic/space-in-parens'
|
|
818
|
-
// '@stylistic/space-infix-ops'
|
|
819
|
-
// '@stylistic/space-unary-ops'
|
|
820
|
-
// '@stylistic/spaced-comment'
|
|
821
|
-
// '@stylistic/template-curly-spacing'
|
|
822
|
-
// '@stylistic/template-tag-spacing'
|
|
823
|
-
// '@stylistic/type-annotation-spacing'
|
|
824
|
-
// '@stylistic/type-generic-spacing'
|
|
825
|
-
// '@stylistic/type-named-tuple-spacing'
|
|
826
|
-
// '@stylistic/wrap-iife'
|
|
827
|
-
// '@stylistic/yield-star-spacing'
|
|
828
|
-
// '@stylistic/jsx-closing-bracket-location'
|
|
829
|
-
// '@stylistic/jsx-closing-tag-location'
|
|
830
|
-
// '@stylistic/jsx-curly-brace-presence'
|
|
831
|
-
// '@stylistic/jsx-curly-newline'
|
|
832
|
-
// '@stylistic/jsx-curly-spacing'
|
|
833
|
-
// '@stylistic/jsx-equals-spacing'
|
|
834
|
-
// '@stylistic/jsx-first-prop-new-line'
|
|
835
|
-
// '@stylistic/jsx-function-call-newline'
|
|
836
|
-
// '@stylistic/jsx-indent-props'
|
|
837
|
-
// '@stylistic/jsx-max-props-per-line'
|
|
838
|
-
// '@stylistic/jsx-one-expression-per-line'
|
|
839
|
-
// '@stylistic/jsx-quotes'
|
|
840
|
-
// '@stylistic/jsx-tag-spacing'
|
|
841
|
-
// '@stylistic/jsx-wrap-multilines'
|
|
842
774
|
return [
|
|
843
775
|
{
|
|
844
776
|
files: ruleFiles,
|
|
@@ -851,7 +783,227 @@ async function stylisticConfig(options = {}, scriptScope) {
|
|
|
851
783
|
files: ruleFiles,
|
|
852
784
|
name: 'waltz/stylistic/rules',
|
|
853
785
|
rules: {
|
|
854
|
-
|
|
786
|
+
'@stylistic/array-bracket-spacing': ['error', 'never'],
|
|
787
|
+
'@stylistic/arrow-parens': [
|
|
788
|
+
'error',
|
|
789
|
+
'as-needed',
|
|
790
|
+
{ requireForBlockBody: true },
|
|
791
|
+
],
|
|
792
|
+
'@stylistic/arrow-spacing': [
|
|
793
|
+
'error',
|
|
794
|
+
{ after: true, before: true },
|
|
795
|
+
],
|
|
796
|
+
'@stylistic/block-spacing': ['error', 'always'],
|
|
797
|
+
'@stylistic/brace-style': [
|
|
798
|
+
'error',
|
|
799
|
+
'stroustrup',
|
|
800
|
+
{ allowSingleLine: true },
|
|
801
|
+
],
|
|
802
|
+
'@stylistic/comma-dangle': ['error', 'always-multiline'],
|
|
803
|
+
'@stylistic/comma-spacing': [
|
|
804
|
+
'error',
|
|
805
|
+
{ after: true, before: false },
|
|
806
|
+
],
|
|
807
|
+
'@stylistic/comma-style': ['error', 'last'],
|
|
808
|
+
'@stylistic/computed-property-spacing': [
|
|
809
|
+
'error',
|
|
810
|
+
'never',
|
|
811
|
+
{ enforceForClassMembers: true },
|
|
812
|
+
],
|
|
813
|
+
'@stylistic/dot-location': ['error', 'property'],
|
|
814
|
+
'@stylistic/eol-last': 'error',
|
|
815
|
+
'@stylistic/generator-star-spacing': [
|
|
816
|
+
'error',
|
|
817
|
+
{ after: true, before: false },
|
|
818
|
+
],
|
|
819
|
+
'@stylistic/indent': [
|
|
820
|
+
'error',
|
|
821
|
+
2,
|
|
822
|
+
{
|
|
823
|
+
ArrayExpression: 1,
|
|
824
|
+
CallExpression: { arguments: 1 },
|
|
825
|
+
flatTernaryExpressions: false,
|
|
826
|
+
FunctionDeclaration: {
|
|
827
|
+
body: 1,
|
|
828
|
+
parameters: 1,
|
|
829
|
+
returnType: 1,
|
|
830
|
+
},
|
|
831
|
+
FunctionExpression: {
|
|
832
|
+
body: 1,
|
|
833
|
+
parameters: 1,
|
|
834
|
+
returnType: 1,
|
|
835
|
+
},
|
|
836
|
+
ignoreComments: false,
|
|
837
|
+
ignoredNodes: ['TSUnionType', 'TSIntersectionType'],
|
|
838
|
+
ImportDeclaration: 1,
|
|
839
|
+
MemberExpression: 1,
|
|
840
|
+
ObjectExpression: 1,
|
|
841
|
+
offsetTernaryExpressions: true,
|
|
842
|
+
outerIIFEBody: 1,
|
|
843
|
+
SwitchCase: 1,
|
|
844
|
+
tabLength: 2,
|
|
845
|
+
VariableDeclarator: 1,
|
|
846
|
+
},
|
|
847
|
+
],
|
|
848
|
+
'@stylistic/indent-binary-ops': ['error', 2],
|
|
849
|
+
'@stylistic/jsx-closing-bracket-location': 'error',
|
|
850
|
+
'@stylistic/jsx-closing-tag-location': 'error',
|
|
851
|
+
'@stylistic/jsx-curly-brace-presence': [
|
|
852
|
+
'error',
|
|
853
|
+
{ propElementValues: 'always' },
|
|
854
|
+
],
|
|
855
|
+
'@stylistic/jsx-curly-newline': 'error',
|
|
856
|
+
'@stylistic/jsx-curly-spacing': ['error', 'never'],
|
|
857
|
+
'@stylistic/jsx-equals-spacing': 'error',
|
|
858
|
+
'@stylistic/jsx-first-prop-new-line': 'error',
|
|
859
|
+
'@stylistic/jsx-function-call-newline': ['error', 'multiline'],
|
|
860
|
+
'@stylistic/jsx-indent-props': ['error', 2],
|
|
861
|
+
'@stylistic/jsx-max-props-per-line': [
|
|
862
|
+
'error',
|
|
863
|
+
{ maximum: 1, when: 'multiline' },
|
|
864
|
+
],
|
|
865
|
+
'@stylistic/jsx-one-expression-per-line': [
|
|
866
|
+
'error',
|
|
867
|
+
{ allow: 'single-child' },
|
|
868
|
+
],
|
|
869
|
+
'@stylistic/jsx-quotes': 'error',
|
|
870
|
+
'@stylistic/jsx-tag-spacing': [
|
|
871
|
+
'error',
|
|
872
|
+
{
|
|
873
|
+
afterOpening: 'never',
|
|
874
|
+
beforeClosing: 'never',
|
|
875
|
+
beforeSelfClosing: 'always',
|
|
876
|
+
closingSlash: 'never',
|
|
877
|
+
},
|
|
878
|
+
],
|
|
879
|
+
'@stylistic/jsx-wrap-multilines': [
|
|
880
|
+
'error',
|
|
881
|
+
{
|
|
882
|
+
arrow: 'parens-new-line',
|
|
883
|
+
assignment: 'parens-new-line',
|
|
884
|
+
condition: 'parens-new-line',
|
|
885
|
+
declaration: 'parens-new-line',
|
|
886
|
+
logical: 'parens-new-line',
|
|
887
|
+
prop: 'parens-new-line',
|
|
888
|
+
propertyValue: 'parens-new-line',
|
|
889
|
+
return: 'parens-new-line',
|
|
890
|
+
},
|
|
891
|
+
],
|
|
892
|
+
'@stylistic/key-spacing': [
|
|
893
|
+
'error',
|
|
894
|
+
{ afterColon: true, beforeColon: false },
|
|
895
|
+
],
|
|
896
|
+
'@stylistic/keyword-spacing': [
|
|
897
|
+
'error',
|
|
898
|
+
{ after: true, before: true },
|
|
899
|
+
],
|
|
900
|
+
'@stylistic/lines-between-class-members': [
|
|
901
|
+
'error',
|
|
902
|
+
'always',
|
|
903
|
+
{ exceptAfterSingleLine: true },
|
|
904
|
+
],
|
|
905
|
+
'@stylistic/max-statements-per-line': ['error', { max: 1 }],
|
|
906
|
+
'@stylistic/member-delimiter-style': [
|
|
907
|
+
'error',
|
|
908
|
+
{
|
|
909
|
+
multiline: {
|
|
910
|
+
delimiter: 'none',
|
|
911
|
+
requireLast: false,
|
|
912
|
+
},
|
|
913
|
+
multilineDetection: 'brackets',
|
|
914
|
+
overrides: {
|
|
915
|
+
interface: {
|
|
916
|
+
multiline: {
|
|
917
|
+
delimiter: 'none',
|
|
918
|
+
requireLast: false,
|
|
919
|
+
},
|
|
920
|
+
},
|
|
921
|
+
},
|
|
922
|
+
singleline: { delimiter: 'comma' },
|
|
923
|
+
},
|
|
924
|
+
],
|
|
925
|
+
'@stylistic/multiline-ternary': ['error', 'always-multiline'],
|
|
926
|
+
'@stylistic/new-parens': 'error',
|
|
927
|
+
'@stylistic/no-extra-parens': ['error', 'functions'],
|
|
928
|
+
'@stylistic/no-floating-decimal': 'error',
|
|
929
|
+
'@stylistic/no-mixed-operators': [
|
|
930
|
+
'error',
|
|
931
|
+
{
|
|
932
|
+
allowSamePrecedence: true,
|
|
933
|
+
groups: [
|
|
934
|
+
['==', '!=', '===', '!==', '>', '>=', '<', '<='],
|
|
935
|
+
['&&', '||'],
|
|
936
|
+
['in', 'instanceof'],
|
|
937
|
+
],
|
|
938
|
+
},
|
|
939
|
+
],
|
|
940
|
+
'@stylistic/no-mixed-spaces-and-tabs': 'error',
|
|
941
|
+
'@stylistic/no-multi-spaces': 'error',
|
|
942
|
+
'@stylistic/no-multiple-empty-lines': [
|
|
943
|
+
'error',
|
|
944
|
+
{ max: 1, maxBOF: 0, maxEOF: 0 },
|
|
945
|
+
],
|
|
946
|
+
'@stylistic/no-tabs': 'error',
|
|
947
|
+
'@stylistic/no-trailing-spaces': 'error',
|
|
948
|
+
'@stylistic/no-whitespace-before-property': 'error',
|
|
949
|
+
'@stylistic/object-curly-spacing': ['error', 'always'],
|
|
950
|
+
'@stylistic/operator-linebreak': ['error', 'before'],
|
|
951
|
+
'@stylistic/padded-blocks': [
|
|
952
|
+
'error',
|
|
953
|
+
{ blocks: 'never', classes: 'never', switches: 'never' },
|
|
954
|
+
],
|
|
955
|
+
'@stylistic/quote-props': ['error', 'consistent-as-needed'],
|
|
956
|
+
'@stylistic/quotes': [
|
|
957
|
+
'error',
|
|
958
|
+
'single',
|
|
959
|
+
{ allowTemplateLiterals: 'always', avoidEscape: false },
|
|
960
|
+
],
|
|
961
|
+
'@stylistic/rest-spread-spacing': ['error', 'never'],
|
|
962
|
+
'@stylistic/semi': ['error', 'never'],
|
|
963
|
+
'@stylistic/semi-spacing': [
|
|
964
|
+
'error',
|
|
965
|
+
{ after: true, before: false },
|
|
966
|
+
],
|
|
967
|
+
'@stylistic/space-before-blocks': ['error', 'always'],
|
|
968
|
+
'@stylistic/space-before-function-paren': [
|
|
969
|
+
'error',
|
|
970
|
+
{ anonymous: 'always', asyncArrow: 'always', named: 'never' },
|
|
971
|
+
],
|
|
972
|
+
'@stylistic/space-in-parens': ['error', 'never'],
|
|
973
|
+
'@stylistic/space-infix-ops': 'error',
|
|
974
|
+
'@stylistic/space-unary-ops': [
|
|
975
|
+
'error',
|
|
976
|
+
{ nonwords: false, words: true },
|
|
977
|
+
],
|
|
978
|
+
'@stylistic/spaced-comment': [
|
|
979
|
+
'error',
|
|
980
|
+
'always',
|
|
981
|
+
{
|
|
982
|
+
block: {
|
|
983
|
+
balanced: true,
|
|
984
|
+
exceptions: ['*'],
|
|
985
|
+
markers: ['!'],
|
|
986
|
+
},
|
|
987
|
+
line: {
|
|
988
|
+
exceptions: ['/', '#'],
|
|
989
|
+
markers: ['/'],
|
|
990
|
+
},
|
|
991
|
+
},
|
|
992
|
+
],
|
|
993
|
+
'@stylistic/template-curly-spacing': 'error',
|
|
994
|
+
'@stylistic/template-tag-spacing': ['error', 'never'],
|
|
995
|
+
'@stylistic/type-annotation-spacing': ['error', {}],
|
|
996
|
+
'@stylistic/type-generic-spacing': 'error',
|
|
997
|
+
'@stylistic/type-named-tuple-spacing': 'error',
|
|
998
|
+
'@stylistic/wrap-iife': [
|
|
999
|
+
'error',
|
|
1000
|
+
'any',
|
|
1001
|
+
{ functionPrototypeMethods: true },
|
|
1002
|
+
],
|
|
1003
|
+
'@stylistic/yield-star-spacing': [
|
|
1004
|
+
'error',
|
|
1005
|
+
{ after: true, before: false },
|
|
1006
|
+
],
|
|
855
1007
|
...options.overrides,
|
|
856
1008
|
},
|
|
857
1009
|
},
|
|
@@ -860,12 +1012,17 @@ async function stylisticConfig(options = {}, scriptScope) {
|
|
|
860
1012
|
|
|
861
1013
|
async function tailwindcssConfig(options = {}, scriptScope) {
|
|
862
1014
|
const tailwindcss = await importTailwindcssPlugin();
|
|
863
|
-
const recommended = tailwindcss.configs.recommended;
|
|
864
1015
|
const files = resolveFiles(options.files, getScriptFiles(scriptScope));
|
|
865
1016
|
return [
|
|
866
1017
|
{
|
|
867
1018
|
files,
|
|
868
|
-
languageOptions:
|
|
1019
|
+
languageOptions: {
|
|
1020
|
+
parserOptions: {
|
|
1021
|
+
// Since Tailwind can be enabled independently—even without enabling
|
|
1022
|
+
// React—it ensures that JSX files are parsed correctly.
|
|
1023
|
+
ecmaFeatures: { jsx: true },
|
|
1024
|
+
},
|
|
1025
|
+
},
|
|
869
1026
|
name: 'waltz/tailwindcss/setup',
|
|
870
1027
|
plugins: {
|
|
871
1028
|
tailwindcss,
|
|
@@ -875,11 +1032,21 @@ async function tailwindcssConfig(options = {}, scriptScope) {
|
|
|
875
1032
|
files,
|
|
876
1033
|
name: 'waltz/tailwindcss/rules',
|
|
877
1034
|
rules: {
|
|
878
|
-
|
|
1035
|
+
'tailwindcss/classnames-order': 'warn',
|
|
1036
|
+
'tailwindcss/enforces-canonical-classname': 'warn',
|
|
1037
|
+
'tailwindcss/enforces-negative-arbitrary-values': 'warn',
|
|
1038
|
+
'tailwindcss/enforces-shorthand': 'warn',
|
|
1039
|
+
'tailwindcss/important-modifier-suffix': 'warn',
|
|
1040
|
+
'tailwindcss/no-arbitrary-value': 'off',
|
|
1041
|
+
'tailwindcss/no-contradicting-classname': 'error',
|
|
1042
|
+
// Generally, custom class names are supported, so the recommended practice
|
|
1043
|
+
// is not followed here.
|
|
1044
|
+
'tailwindcss/no-custom-classname': 'off',
|
|
1045
|
+
'tailwindcss/no-unnecessary-arbitrary-value': 'warn',
|
|
879
1046
|
...options.overrides,
|
|
880
1047
|
},
|
|
881
1048
|
settings: {
|
|
882
|
-
|
|
1049
|
+
tailwindcss: {},
|
|
883
1050
|
...options.settings,
|
|
884
1051
|
},
|
|
885
1052
|
},
|
|
@@ -948,6 +1115,12 @@ async function waltz(options = {}, ...orders) {
|
|
|
948
1115
|
const isEnableReact = !!options.react;
|
|
949
1116
|
const { scriptScope } = resolveFileScopes(options);
|
|
950
1117
|
const configs = [];
|
|
1118
|
+
if (options.globalIgnores) {
|
|
1119
|
+
configs.push({
|
|
1120
|
+
ignores: options.globalIgnores,
|
|
1121
|
+
name: 'waltz/global-ignores',
|
|
1122
|
+
});
|
|
1123
|
+
}
|
|
951
1124
|
if (options.gitignore) {
|
|
952
1125
|
configs.push(gitignore(options.gitignore));
|
|
953
1126
|
}
|
package/dist/types.d.ts
CHANGED
|
@@ -88,6 +88,13 @@ interface WaltzOptions {
|
|
|
88
88
|
* @see https://github.com/antfu/eslint-config-flat-gitignore
|
|
89
89
|
*/
|
|
90
90
|
gitignore?: boolean | FlatGitignoreOptions;
|
|
91
|
+
/**
|
|
92
|
+
* Glob patterns to ignore globally.
|
|
93
|
+
*
|
|
94
|
+
* These patterns are applied by ESLint before any of Waltz's file-scoped
|
|
95
|
+
* configurations.
|
|
96
|
+
*/
|
|
97
|
+
globalIgnores?: Linter.Config['ignores'];
|
|
91
98
|
/**
|
|
92
99
|
* Enable rules for validating imports and exports. Import ordering is
|
|
93
100
|
* provided by Perfectionist when enabled, and by `imports/order` otherwise.
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@chanyuxi/eslint-waltz",
|
|
3
3
|
"type": "module",
|
|
4
|
-
"version": "1.
|
|
4
|
+
"version": "1.4.0",
|
|
5
5
|
"packageManager": "pnpm@10.4.1",
|
|
6
6
|
"description": "A composable ESLint flat config for JavaScript, TypeScript, JSONC, imports, React, Tailwind CSS, Perfectionist, and Vitest.",
|
|
7
7
|
"author": "chanyuxi <2438149743@qq.com> (https://github.com/chanyuxi)",
|
|
@@ -9,7 +9,7 @@
|
|
|
9
9
|
"homepage": "https://github.com/chanyuxi/eslint-waltz",
|
|
10
10
|
"repository": {
|
|
11
11
|
"type": "git",
|
|
12
|
-
"url": "https://github.com/chanyuxi/eslint-waltz.git"
|
|
12
|
+
"url": "git+https://github.com/chanyuxi/eslint-waltz.git"
|
|
13
13
|
},
|
|
14
14
|
"bugs": {
|
|
15
15
|
"url": "https://github.com/chanyuxi/eslint-waltz/issues"
|
|
@@ -31,7 +31,7 @@
|
|
|
31
31
|
}
|
|
32
32
|
},
|
|
33
33
|
"bin": {
|
|
34
|
-
"eslint-waltz": "
|
|
34
|
+
"eslint-waltz": "dist/cli.js"
|
|
35
35
|
},
|
|
36
36
|
"files": [
|
|
37
37
|
"dist"
|
|
@@ -49,7 +49,7 @@
|
|
|
49
49
|
"check": "pnpm run typeCheck && pnpm run lint && pnpm run test",
|
|
50
50
|
"changeset": "changeset",
|
|
51
51
|
"version": "changeset version && pnpm install --lockfile-only",
|
|
52
|
-
"release": "changeset publish",
|
|
52
|
+
"release": "changeset publish",
|
|
53
53
|
"prepack": "pnpm build",
|
|
54
54
|
"prepare": "husky"
|
|
55
55
|
},
|