@kikiutils/eslint-config 2.1.0 → 3.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
@@ -12,7 +12,7 @@ Description
12
12
 
13
13
  ## Requirements
14
14
 
15
- - **Node.js** `>= 20.0.0`
15
+ - **Node.js** `>= 22.0.0`
16
16
 
17
17
  ## Installation
18
18
 
package/dist/index.d.ts CHANGED
@@ -1,8 +1,11 @@
1
- import { antfu } from '@antfu/eslint-config';
2
- import type { ConfigNames, TypedFlatConfigItem } from '@antfu/eslint-config';
3
- import type { FlatConfigComposer } from 'eslint-flat-config-utils';
4
- export declare function createConfig(environment?: 'bun' | 'node', options?: Parameters<typeof antfu>[0]): FlatConfigComposer<TypedFlatConfigItem, ConfigNames>;
5
- export declare const bun: FlatConfigComposer<TypedFlatConfigItem, ConfigNames>;
6
- export declare const node: FlatConfigComposer<TypedFlatConfigItem, ConfigNames>;
7
- export declare const vue: FlatConfigComposer<TypedFlatConfigItem, ConfigNames>;
1
+ import { ConfigNames, TypedFlatConfigItem, antfu } from "@antfu/eslint-config";
2
+ import { FlatConfigComposer } from "eslint-flat-config-utils";
3
+
4
+ //#region src/index.d.ts
5
+ declare function createConfig(environment?: 'bun' | 'node', options?: Parameters<typeof antfu>[0]): FlatConfigComposer<TypedFlatConfigItem, ConfigNames>;
6
+ declare const bun: FlatConfigComposer<TypedFlatConfigItem, ConfigNames>;
7
+ declare const node: FlatConfigComposer<TypedFlatConfigItem, ConfigNames>;
8
+ declare const vue: FlatConfigComposer<TypedFlatConfigItem, ConfigNames>;
9
+ //#endregion
10
+ export { bun, createConfig, node, vue };
8
11
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,MAAM,sBAAsB,CAAC;AAC7C,OAAO,KAAK,EACR,WAAW,EACX,mBAAmB,EACtB,MAAM,sBAAsB,CAAC;AAK9B,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,0BAA0B,CAAC;AAYnE,wBAAgB,YAAY,CACxB,WAAW,GAAE,KAAK,GAAG,MAAe,EACpC,OAAO,CAAC,EAAE,UAAU,CAAC,OAAO,KAAK,CAAC,CAAC,CAAC,CAAC,GACtC,kBAAkB,CAAC,mBAAmB,EAAE,WAAW,CAAC,CAoYtD;AAqBD,eAAO,MAAM,GAAG,sDAAsB,CAAC;AACvC,eAAO,MAAM,IAAI,sDAAuB,CAAC;AACzC,eAAO,MAAM,GAAG,sDAMf,CAAC"}
1
+ {"version":3,"file":"index.d.ts","names":[],"sources":["../src/index.ts"],"sourcesContent":[],"mappings":";;;;iBAqBgB,YAAA,yCAEF,kBAAkB,YAC7B,mBAAmB,qBAAqB;AAH3B,cA4ZH,GA5Ze,EA4ZZ,kBA5ZY,CA4ZZ,mBA5ZY,EA4ZZ,WA5ZY,CAAA;AAAA,cA6Zf,IA7Ze,EA6ZX,kBA7ZW,CA6ZX,mBA7ZW,EA6ZX,WA7ZW,CAAA;AAEI,cA4ZnB,GA5ZmB,EA4ZhB,kBA5ZgB,CA4ZhB,mBA5ZgB,EA4ZhB,WA5ZgB,CAAA"}
package/dist/index.js ADDED
@@ -0,0 +1,266 @@
1
+ import { antfu } from "@antfu/eslint-config";
2
+ import kikiutilsTailwindcss from "@kikiutils/eslint-plugin-tailwindcss";
3
+ import kikiutilsEslintPluginVue from "@kikiutils/eslint-plugin-vue";
4
+ import format from "eslint-plugin-format";
5
+ import promise from "eslint-plugin-promise";
6
+ import tailwindcss from "eslint-plugin-tailwindcss";
7
+
8
+ //#region src/index.ts
9
+ const basePerfectionistSortOptions = {
10
+ ignoreCase: false,
11
+ type: "natural"
12
+ };
13
+ function createConfig(environment = "node", options) {
14
+ const userConfigs = [
15
+ {
16
+ files: ["**/*.{cjs,js,mjs,ts,tsx,vue}"],
17
+ plugins: { promise },
18
+ rules: {
19
+ "antfu/consistent-list-newline": ["error", {
20
+ ArrayExpression: false,
21
+ ArrayPattern: false
22
+ }],
23
+ "antfu/curly": "off",
24
+ "antfu/if-newline": "off",
25
+ "antfu/no-top-level-await": "off",
26
+ "curly": ["error", "multi-line"],
27
+ "max-classes-per-file": ["error", 1],
28
+ "no-promise-executor-return": ["error", { allowVoid: true }],
29
+ "node/prefer-global/process": ["error", "always"],
30
+ "perfectionist/sort-array-includes": ["error", basePerfectionistSortOptions],
31
+ "perfectionist/sort-enums": ["error", basePerfectionistSortOptions],
32
+ "perfectionist/sort-heritage-clauses": ["error", {
33
+ ignoreCase: false,
34
+ type: "natural"
35
+ }],
36
+ "perfectionist/sort-imports": ["error", {
37
+ environment,
38
+ groups: [
39
+ "side-effect",
40
+ "side-effect-style",
41
+ "style",
42
+ ["builtin", "builtin-type"],
43
+ ["external", "external-type"],
44
+ ["internal", "internal-type"],
45
+ ["parent", "parent-type"],
46
+ ["sibling", "sibling-type"],
47
+ ["index", "index-type"],
48
+ "object",
49
+ "unknown"
50
+ ],
51
+ ignoreCase: false,
52
+ internalPattern: [
53
+ "^#.*",
54
+ "^@/.*",
55
+ "^~/.*"
56
+ ],
57
+ type: "natural"
58
+ }],
59
+ "perfectionist/sort-interfaces": ["error", basePerfectionistSortOptions],
60
+ "perfectionist/sort-intersection-types": ["error", basePerfectionistSortOptions],
61
+ "perfectionist/sort-maps": ["error", basePerfectionistSortOptions],
62
+ "perfectionist/sort-modules": ["error", {
63
+ ...basePerfectionistSortOptions,
64
+ groups: [
65
+ "declare-type",
66
+ ["export-type", "type"],
67
+ "declare-interface",
68
+ ["export-interface", "interface"],
69
+ "declare-enum",
70
+ ["enum", "export-enum"],
71
+ "declare-class",
72
+ ["class", "export-class"],
73
+ "declare-function",
74
+ ["export-function", "function"]
75
+ ]
76
+ }],
77
+ "perfectionist/sort-object-types": ["error", basePerfectionistSortOptions],
78
+ "perfectionist/sort-objects": ["error", basePerfectionistSortOptions],
79
+ "perfectionist/sort-sets": ["error", basePerfectionistSortOptions],
80
+ "perfectionist/sort-switch-case": ["error", {
81
+ ignoreCase: false,
82
+ type: "natural"
83
+ }],
84
+ "perfectionist/sort-union-types": ["error", basePerfectionistSortOptions],
85
+ "perfectionist/sort-variable-declarations": ["error", basePerfectionistSortOptions],
86
+ "promise/no-multiple-resolved": "error",
87
+ "promise/no-return-in-finally": "error",
88
+ "promise/no-return-wrap": "error",
89
+ "require-await": "error",
90
+ "style/array-bracket-newline": ["error", { multiline: true }],
91
+ "style/array-element-newline": ["error", {
92
+ ArrayExpression: {
93
+ consistent: true,
94
+ minItems: 2
95
+ },
96
+ ArrayPattern: { minItems: 3 }
97
+ }],
98
+ "style/arrow-parens": ["error", "always"],
99
+ "style/brace-style": [
100
+ "error",
101
+ "1tbs",
102
+ { allowSingleLine: false }
103
+ ],
104
+ "style/function-call-spacing": ["error", "never"],
105
+ "style/indent": ["error", 4],
106
+ "style/max-len": ["warn", {
107
+ code: 120,
108
+ comments: 120
109
+ }],
110
+ "style/member-delimiter-style": ["error", { multiline: {
111
+ delimiter: "semi",
112
+ requireLast: true
113
+ } }],
114
+ "style/no-extra-parens": [
115
+ "error",
116
+ "all",
117
+ { nestedBinaryExpressions: false }
118
+ ],
119
+ "style/no-extra-semi": "error",
120
+ "style/object-curly-newline": ["error", {
121
+ ExportDeclaration: {
122
+ minProperties: 2,
123
+ multiline: true
124
+ },
125
+ ImportDeclaration: {
126
+ minProperties: 2,
127
+ multiline: true
128
+ },
129
+ ObjectExpression: {
130
+ minProperties: 2,
131
+ multiline: true
132
+ },
133
+ ObjectPattern: {
134
+ minProperties: 3,
135
+ multiline: true
136
+ }
137
+ }],
138
+ "style/operator-linebreak": [
139
+ "error",
140
+ "before",
141
+ { overrides: { "=": "after" } }
142
+ ],
143
+ "style/padding-line-between-statements": [
144
+ "error",
145
+ {
146
+ blankLine: "always",
147
+ next: [
148
+ "class",
149
+ "enum",
150
+ "function"
151
+ ],
152
+ prev: "*"
153
+ },
154
+ {
155
+ blankLine: "always",
156
+ next: "*",
157
+ prev: ["class", "function"]
158
+ }
159
+ ],
160
+ "style/semi": ["error", "always"],
161
+ "ts/consistent-generic-constructors": ["error", "constructor"],
162
+ "ts/no-redeclare": "off"
163
+ }
164
+ },
165
+ {
166
+ files: ["**/*.vue"],
167
+ plugins: {
168
+ "@kikiutils/tailwindcss": kikiutilsTailwindcss,
169
+ "@kikiutils/vue": kikiutilsEslintPluginVue,
170
+ tailwindcss
171
+ },
172
+ rules: {
173
+ "@kikiutils/tailwindcss/classnames-order": "error",
174
+ "@kikiutils/vue/attributes-order": ["error", { alphabetical: true }],
175
+ "@kikiutils/vue/no-extra-space-in-class": "error",
176
+ "style/max-len": "off",
177
+ "tailwindcss/classnames-order": "off",
178
+ "tailwindcss/enforces-negative-arbitrary-values": "error",
179
+ "tailwindcss/enforces-shorthand": "error",
180
+ "tailwindcss/no-unnecessary-arbitrary-value": "error",
181
+ "vue/attribute-hyphenation": "error",
182
+ "vue/attributes-order": "off",
183
+ "vue/block-order": ["error", { order: [
184
+ "template",
185
+ "script",
186
+ "style"
187
+ ] }],
188
+ "vue/component-api-style": "error",
189
+ "vue/define-emits-declaration": "error",
190
+ "vue/define-props-declaration": "error",
191
+ "vue/enforce-style-attribute": "error",
192
+ "vue/html-closing-bracket-newline": "error",
193
+ "vue/html-closing-bracket-spacing": "error",
194
+ "vue/html-indent": ["error", 4],
195
+ "vue/max-attributes-per-line": ["error", {
196
+ multiline: 1,
197
+ singleline: 1
198
+ }],
199
+ "vue/max-len": ["warn", {
200
+ code: 120,
201
+ comments: 120,
202
+ template: 120
203
+ }],
204
+ "vue/no-dupe-keys": "error",
205
+ "vue/no-lone-template": "error",
206
+ "vue/no-multi-spaces": "error",
207
+ "vue/no-multiple-objects-in-class": "error",
208
+ "vue/no-root-v-if": "error",
209
+ "vue/no-template-target-blank": "error",
210
+ "vue/no-v-html": "error",
211
+ "vue/prefer-define-options": "error",
212
+ "vue/prefer-separate-static-class": "error",
213
+ "vue/require-explicit-emits": "error",
214
+ "vue/require-typed-ref": "error"
215
+ }
216
+ },
217
+ {
218
+ files: ["**/.vscode/*.json"],
219
+ rules: {
220
+ "jsonc/sort-array-values": ["error", {
221
+ order: {
222
+ natural: true,
223
+ type: "asc"
224
+ },
225
+ pathPattern: "^.*$"
226
+ }],
227
+ "jsonc/sort-keys": [
228
+ "error",
229
+ "asc",
230
+ {
231
+ caseSensitive: true,
232
+ natural: true
233
+ }
234
+ ]
235
+ }
236
+ }
237
+ ];
238
+ if (options?.formatters && (typeof options.formatters === "boolean" || options.formatters.css)) userConfigs.splice(1, 0, createPrettierCssConfig("css"), createPrettierCssConfig("sass"), createPrettierCssConfig("scss"));
239
+ return antfu({
240
+ typescript: true,
241
+ ...options
242
+ }, ...userConfigs);
243
+ }
244
+ function createPrettierCssConfig(parser) {
245
+ return {
246
+ files: [`**/*.${parser}`],
247
+ languageOptions: { parser: format.parserPlain },
248
+ plugins: { format },
249
+ rules: { "format/prettier": ["error", {
250
+ parser,
251
+ printWidth: 120,
252
+ singleQuote: true,
253
+ tabWidth: 4
254
+ }] }
255
+ };
256
+ }
257
+ const bun = createConfig("bun");
258
+ const node = createConfig("node");
259
+ const vue = createConfig("node", {
260
+ formatters: { css: true },
261
+ vue: true
262
+ });
263
+
264
+ //#endregion
265
+ export { bun, createConfig, node, vue };
266
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","names":["userConfigs: Parameters<typeof antfu>[1]"],"sources":["../src/index.ts"],"sourcesContent":["import { antfu } from '@antfu/eslint-config';\nimport type {\n ConfigNames,\n TypedFlatConfigItem,\n} from '@antfu/eslint-config';\n// @ts-expect-error No declare file.\nimport kikiutilsTailwindcss from '@kikiutils/eslint-plugin-tailwindcss';\n// @ts-expect-error Ignore this error.\nimport kikiutilsEslintPluginVue from '@kikiutils/eslint-plugin-vue';\nimport type { FlatConfigComposer } from 'eslint-flat-config-utils';\nimport format from 'eslint-plugin-format';\n// @ts-expect-error No declare file.\nimport promise from 'eslint-plugin-promise';\n// @ts-expect-error No declare file.\nimport tailwindcss from 'eslint-plugin-tailwindcss';\n\nconst basePerfectionistSortOptions = {\n ignoreCase: false,\n type: 'natural',\n} as const;\n\nexport function createConfig(\n environment: 'bun' | 'node' = 'node',\n options?: Parameters<typeof antfu>[0],\n): FlatConfigComposer<TypedFlatConfigItem, ConfigNames> {\n const userConfigs: Parameters<typeof antfu>[1] = [\n {\n files: ['**/*.{cjs,js,mjs,ts,tsx,vue}'],\n plugins: { promise },\n rules: {\n 'antfu/consistent-list-newline': [\n 'error',\n {\n ArrayExpression: false,\n ArrayPattern: false,\n },\n ],\n 'antfu/curly': 'off',\n 'antfu/if-newline': 'off',\n 'antfu/no-top-level-await': 'off',\n 'curly': [\n 'error',\n 'multi-line',\n ],\n 'max-classes-per-file': [\n 'error',\n 1,\n ],\n 'no-promise-executor-return': [\n 'error',\n { allowVoid: true },\n ],\n 'node/prefer-global/process': [\n 'error',\n 'always',\n ],\n 'perfectionist/sort-array-includes': [\n 'error',\n basePerfectionistSortOptions,\n ],\n 'perfectionist/sort-enums': [\n 'error',\n basePerfectionistSortOptions,\n ],\n 'perfectionist/sort-heritage-clauses': [\n 'error',\n {\n ignoreCase: false,\n type: 'natural',\n },\n ],\n 'perfectionist/sort-imports': [\n 'error',\n {\n environment,\n groups: [\n 'side-effect',\n 'side-effect-style',\n 'style',\n [\n 'builtin',\n 'builtin-type',\n ],\n [\n 'external',\n 'external-type',\n ],\n [\n 'internal',\n 'internal-type',\n ],\n [\n 'parent',\n 'parent-type',\n ],\n [\n 'sibling',\n 'sibling-type',\n ],\n [\n 'index',\n 'index-type',\n ],\n 'object',\n 'unknown',\n ],\n ignoreCase: false,\n internalPattern: [\n '^#.*',\n '^@/.*',\n '^~/.*',\n ],\n type: 'natural',\n },\n ],\n 'perfectionist/sort-interfaces': [\n 'error',\n basePerfectionistSortOptions,\n ],\n 'perfectionist/sort-intersection-types': [\n 'error',\n basePerfectionistSortOptions,\n ],\n 'perfectionist/sort-maps': [\n 'error',\n basePerfectionistSortOptions,\n ],\n 'perfectionist/sort-modules': [\n 'error',\n {\n ...basePerfectionistSortOptions,\n groups: [\n 'declare-type',\n [\n 'export-type',\n 'type',\n ],\n 'declare-interface',\n [\n 'export-interface',\n 'interface',\n ],\n 'declare-enum',\n [\n 'enum',\n 'export-enum',\n ],\n 'declare-class',\n [\n 'class',\n 'export-class',\n ],\n 'declare-function',\n [\n 'export-function',\n 'function',\n ],\n ],\n },\n ],\n 'perfectionist/sort-object-types': [\n 'error',\n basePerfectionistSortOptions,\n ],\n 'perfectionist/sort-objects': [\n 'error',\n basePerfectionistSortOptions,\n ],\n 'perfectionist/sort-sets': [\n 'error',\n basePerfectionistSortOptions,\n ],\n 'perfectionist/sort-switch-case': [\n 'error',\n {\n ignoreCase: false,\n type: 'natural',\n },\n ],\n 'perfectionist/sort-union-types': [\n 'error',\n basePerfectionistSortOptions,\n ],\n 'perfectionist/sort-variable-declarations': [\n 'error',\n basePerfectionistSortOptions,\n ],\n 'promise/no-multiple-resolved': 'error',\n 'promise/no-return-in-finally': 'error',\n 'promise/no-return-wrap': 'error',\n 'require-await': 'error',\n 'style/array-bracket-newline': [\n 'error',\n { multiline: true },\n ],\n 'style/array-element-newline': [\n 'error',\n {\n ArrayExpression: {\n consistent: true,\n minItems: 2,\n },\n ArrayPattern: { minItems: 3 },\n },\n ],\n 'style/arrow-parens': [\n 'error',\n 'always',\n ],\n 'style/brace-style': [\n 'error',\n '1tbs',\n { allowSingleLine: false },\n ],\n 'style/function-call-spacing': [\n 'error',\n 'never',\n ],\n 'style/indent': [\n 'error',\n 4,\n ],\n 'style/max-len': [\n 'warn',\n {\n code: 120,\n comments: 120,\n },\n ],\n 'style/member-delimiter-style': [\n 'error',\n {\n multiline: {\n delimiter: 'semi',\n requireLast: true,\n },\n },\n ],\n 'style/no-extra-parens': [\n 'error',\n 'all',\n { nestedBinaryExpressions: false },\n ],\n 'style/no-extra-semi': 'error',\n 'style/object-curly-newline': [\n 'error',\n {\n ExportDeclaration: {\n minProperties: 2,\n multiline: true,\n },\n ImportDeclaration: {\n minProperties: 2,\n multiline: true,\n },\n ObjectExpression: {\n minProperties: 2,\n multiline: true,\n },\n ObjectPattern: {\n minProperties: 3,\n multiline: true,\n },\n },\n ],\n 'style/operator-linebreak': [\n 'error',\n 'before',\n { overrides: { '=': 'after' } },\n ],\n 'style/padding-line-between-statements': [\n 'error',\n {\n blankLine: 'always',\n next: [\n 'class',\n 'enum',\n 'function',\n ],\n prev: '*',\n },\n {\n blankLine: 'always',\n next: '*',\n prev: [\n 'class',\n 'function',\n ],\n },\n ],\n 'style/semi': [\n 'error',\n 'always',\n ],\n 'ts/consistent-generic-constructors': [\n 'error',\n 'constructor',\n ],\n 'ts/no-redeclare': 'off',\n },\n },\n {\n files: ['**/*.vue'],\n plugins: {\n '@kikiutils/tailwindcss': kikiutilsTailwindcss,\n '@kikiutils/vue': kikiutilsEslintPluginVue,\n tailwindcss,\n },\n rules: {\n '@kikiutils/tailwindcss/classnames-order': 'error',\n '@kikiutils/vue/attributes-order': [\n 'error',\n { alphabetical: true },\n ],\n '@kikiutils/vue/no-extra-space-in-class': 'error',\n 'style/max-len': 'off',\n 'tailwindcss/classnames-order': 'off',\n 'tailwindcss/enforces-negative-arbitrary-values': 'error',\n 'tailwindcss/enforces-shorthand': 'error',\n 'tailwindcss/no-unnecessary-arbitrary-value': 'error',\n 'vue/attribute-hyphenation': 'error',\n 'vue/attributes-order': 'off',\n 'vue/block-order': [\n 'error',\n {\n order: [\n 'template',\n 'script',\n 'style',\n ],\n },\n ],\n 'vue/component-api-style': 'error',\n 'vue/define-emits-declaration': 'error',\n 'vue/define-props-declaration': 'error',\n 'vue/enforce-style-attribute': 'error',\n 'vue/html-closing-bracket-newline': 'error',\n 'vue/html-closing-bracket-spacing': 'error',\n 'vue/html-indent': [\n 'error',\n 4,\n ],\n 'vue/max-attributes-per-line': [\n 'error',\n {\n multiline: 1,\n singleline: 1,\n },\n ],\n 'vue/max-len': [\n 'warn',\n {\n code: 120,\n comments: 120,\n template: 120,\n },\n ],\n 'vue/no-dupe-keys': 'error',\n 'vue/no-lone-template': 'error',\n 'vue/no-multi-spaces': 'error',\n 'vue/no-multiple-objects-in-class': 'error',\n 'vue/no-root-v-if': 'error',\n 'vue/no-template-target-blank': 'error',\n 'vue/no-v-html': 'error',\n 'vue/prefer-define-options': 'error',\n 'vue/prefer-separate-static-class': 'error',\n 'vue/require-explicit-emits': 'error',\n 'vue/require-typed-ref': 'error',\n },\n },\n {\n files: ['**/.vscode/*.json'],\n rules: {\n 'jsonc/sort-array-values': [\n 'error',\n {\n order: {\n natural: true,\n type: 'asc',\n },\n pathPattern: '^.*$',\n },\n ],\n 'jsonc/sort-keys': [\n 'error',\n 'asc',\n {\n caseSensitive: true,\n natural: true,\n },\n ],\n },\n },\n ];\n\n if (options?.formatters && (typeof options.formatters === 'boolean' || options.formatters.css)) {\n userConfigs.splice(\n 1,\n 0,\n createPrettierCssConfig('css'),\n createPrettierCssConfig('sass'),\n createPrettierCssConfig('scss'),\n );\n }\n\n return antfu(\n {\n typescript: true,\n ...options,\n },\n ...userConfigs,\n );\n}\n\nfunction createPrettierCssConfig(parser: 'css' | 'sass' | 'scss'): TypedFlatConfigItem {\n return {\n files: [`**/*.${parser}`],\n languageOptions: { parser: format.parserPlain },\n plugins: { format },\n rules: {\n 'format/prettier': [\n 'error',\n {\n parser,\n printWidth: 120,\n singleQuote: true,\n tabWidth: 4,\n },\n ],\n },\n };\n}\n\nexport const bun = createConfig('bun');\nexport const node = createConfig('node');\nexport const vue = createConfig(\n 'node',\n {\n formatters: { css: true },\n vue: true,\n },\n);\n"],"mappings":";;;;;;;;AAgBA,MAAM,+BAA+B;CACjC,YAAY;CACZ,MAAM;CACT;AAED,SAAgB,aACZ,cAA8B,QAC9B,SACoD;CACpD,MAAMA,cAA2C;EAC7C;GACI,OAAO,CAAC,+BAA+B;GACvC,SAAS,EAAE,SAAS;GACpB,OAAO;IACH,iCAAiC,CAC7B,SACA;KACI,iBAAiB;KACjB,cAAc;KACjB,CACJ;IACD,eAAe;IACf,oBAAoB;IACpB,4BAA4B;IAC5B,SAAS,CACL,SACA,aACH;IACD,wBAAwB,CACpB,SACA,EACH;IACD,8BAA8B,CAC1B,SACA,EAAE,WAAW,MAAM,CACtB;IACD,8BAA8B,CAC1B,SACA,SACH;IACD,qCAAqC,CACjC,SACA,6BACH;IACD,4BAA4B,CACxB,SACA,6BACH;IACD,uCAAuC,CACnC,SACA;KACI,YAAY;KACZ,MAAM;KACT,CACJ;IACD,8BAA8B,CAC1B,SACA;KACI;KACA,QAAQ;MACJ;MACA;MACA;MACA,CACI,WACA,eACH;MACD,CACI,YACA,gBACH;MACD,CACI,YACA,gBACH;MACD,CACI,UACA,cACH;MACD,CACI,WACA,eACH;MACD,CACI,SACA,aACH;MACD;MACA;MACH;KACD,YAAY;KACZ,iBAAiB;MACb;MACA;MACA;MACH;KACD,MAAM;KACT,CACJ;IACD,iCAAiC,CAC7B,SACA,6BACH;IACD,yCAAyC,CACrC,SACA,6BACH;IACD,2BAA2B,CACvB,SACA,6BACH;IACD,8BAA8B,CAC1B,SACA;KACI,GAAG;KACH,QAAQ;MACJ;MACA,CACI,eACA,OACH;MACD;MACA,CACI,oBACA,YACH;MACD;MACA,CACI,QACA,cACH;MACD;MACA,CACI,SACA,eACH;MACD;MACA,CACI,mBACA,WACH;MACJ;KACJ,CACJ;IACD,mCAAmC,CAC/B,SACA,6BACH;IACD,8BAA8B,CAC1B,SACA,6BACH;IACD,2BAA2B,CACvB,SACA,6BACH;IACD,kCAAkC,CAC9B,SACA;KACI,YAAY;KACZ,MAAM;KACT,CACJ;IACD,kCAAkC,CAC9B,SACA,6BACH;IACD,4CAA4C,CACxC,SACA,6BACH;IACD,gCAAgC;IAChC,gCAAgC;IAChC,0BAA0B;IAC1B,iBAAiB;IACjB,+BAA+B,CAC3B,SACA,EAAE,WAAW,MAAM,CACtB;IACD,+BAA+B,CAC3B,SACA;KACI,iBAAiB;MACb,YAAY;MACZ,UAAU;MACb;KACD,cAAc,EAAE,UAAU,GAAG;KAChC,CACJ;IACD,sBAAsB,CAClB,SACA,SACH;IACD,qBAAqB;KACjB;KACA;KACA,EAAE,iBAAiB,OAAO;KAC7B;IACD,+BAA+B,CAC3B,SACA,QACH;IACD,gBAAgB,CACZ,SACA,EACH;IACD,iBAAiB,CACb,QACA;KACI,MAAM;KACN,UAAU;KACb,CACJ;IACD,gCAAgC,CAC5B,SACA,EACI,WAAW;KACP,WAAW;KACX,aAAa;KAChB,EACJ,CACJ;IACD,yBAAyB;KACrB;KACA;KACA,EAAE,yBAAyB,OAAO;KACrC;IACD,uBAAuB;IACvB,8BAA8B,CAC1B,SACA;KACI,mBAAmB;MACf,eAAe;MACf,WAAW;MACd;KACD,mBAAmB;MACf,eAAe;MACf,WAAW;MACd;KACD,kBAAkB;MACd,eAAe;MACf,WAAW;MACd;KACD,eAAe;MACX,eAAe;MACf,WAAW;MACd;KACJ,CACJ;IACD,4BAA4B;KACxB;KACA;KACA,EAAE,WAAW,EAAE,KAAK,SAAS,EAAE;KAClC;IACD,yCAAyC;KACrC;KACA;MACI,WAAW;MACX,MAAM;OACF;OACA;OACA;OACH;MACD,MAAM;MACT;KACD;MACI,WAAW;MACX,MAAM;MACN,MAAM,CACF,SACA,WACH;MACJ;KACJ;IACD,cAAc,CACV,SACA,SACH;IACD,sCAAsC,CAClC,SACA,cACH;IACD,mBAAmB;IACtB;GACJ;EACD;GACI,OAAO,CAAC,WAAW;GACnB,SAAS;IACL,0BAA0B;IAC1B,kBAAkB;IAClB;IACH;GACD,OAAO;IACH,2CAA2C;IAC3C,mCAAmC,CAC/B,SACA,EAAE,cAAc,MAAM,CACzB;IACD,0CAA0C;IAC1C,iBAAiB;IACjB,gCAAgC;IAChC,kDAAkD;IAClD,kCAAkC;IAClC,8CAA8C;IAC9C,6BAA6B;IAC7B,wBAAwB;IACxB,mBAAmB,CACf,SACA,EACI,OAAO;KACH;KACA;KACA;KACH,EACJ,CACJ;IACD,2BAA2B;IAC3B,gCAAgC;IAChC,gCAAgC;IAChC,+BAA+B;IAC/B,oCAAoC;IACpC,oCAAoC;IACpC,mBAAmB,CACf,SACA,EACH;IACD,+BAA+B,CAC3B,SACA;KACI,WAAW;KACX,YAAY;KACf,CACJ;IACD,eAAe,CACX,QACA;KACI,MAAM;KACN,UAAU;KACV,UAAU;KACb,CACJ;IACD,oBAAoB;IACpB,wBAAwB;IACxB,uBAAuB;IACvB,oCAAoC;IACpC,oBAAoB;IACpB,gCAAgC;IAChC,iBAAiB;IACjB,6BAA6B;IAC7B,oCAAoC;IACpC,8BAA8B;IAC9B,yBAAyB;IAC5B;GACJ;EACD;GACI,OAAO,CAAC,oBAAoB;GAC5B,OAAO;IACH,2BAA2B,CACvB,SACA;KACI,OAAO;MACH,SAAS;MACT,MAAM;MACT;KACD,aAAa;KAChB,CACJ;IACD,mBAAmB;KACf;KACA;KACA;MACI,eAAe;MACf,SAAS;MACZ;KACJ;IACJ;GACJ;EACJ;AAED,KAAI,SAAS,eAAe,OAAO,QAAQ,eAAe,aAAa,QAAQ,WAAW,KACtF,aAAY,OACR,GACA,GACA,wBAAwB,MAAM,EAC9B,wBAAwB,OAAO,EAC/B,wBAAwB,OAAO,CAClC;AAGL,QAAO,MACH;EACI,YAAY;EACZ,GAAG;EACN,EACD,GAAG,YACN;;AAGL,SAAS,wBAAwB,QAAsD;AACnF,QAAO;EACH,OAAO,CAAC,QAAQ,SAAS;EACzB,iBAAiB,EAAE,QAAQ,OAAO,aAAa;EAC/C,SAAS,EAAE,QAAQ;EACnB,OAAO,EACH,mBAAmB,CACf,SACA;GACI;GACA,YAAY;GACZ,aAAa;GACb,UAAU;GACb,CACJ,EACJ;EACJ;;AAGL,MAAa,MAAM,aAAa,MAAM;AACtC,MAAa,OAAO,aAAa,OAAO;AACxC,MAAa,MAAM,aACf,QACA;CACI,YAAY,EAAE,KAAK,MAAM;CACzB,KAAK;CACR,CACJ"}
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@kikiutils/eslint-config",
3
3
  "type": "module",
4
- "version": "2.1.0",
4
+ "version": "3.0.0",
5
5
  "description": "Using antfu/eslint-config as a base for eslint-config, slightly modified the settings and added additional plugins, mainly for my own use.",
6
6
  "author": "kiki-kanri",
7
7
  "license": "MIT",
@@ -12,47 +12,62 @@
12
12
  "keywords": [],
13
13
  "sideEffects": false,
14
14
  "exports": {
15
- ".": {
16
- "types": "./dist/index.d.ts",
17
- "import": "./dist/index.mjs"
18
- }
15
+ ".": "./dist/index.js",
16
+ "./package.json": "./package.json"
19
17
  },
18
+ "main": "./dist/index.js",
19
+ "module": "./dist/index.js",
20
20
  "types": "./dist/index.d.ts",
21
21
  "files": [
22
22
  "./dist",
23
23
  "./src"
24
24
  ],
25
25
  "engines": {
26
- "node": ">=20.0.0"
26
+ "node": ">=22.0.0"
27
27
  },
28
28
  "scripts": {
29
- "build": "ts-project-builder ./src/index.ts -f esm --clean --preserve-modules --sourcemaps",
29
+ "build": "tsdown",
30
30
  "bumplog": "changelogen --bump --hideAuthorEmail",
31
31
  "depcheck": "depcheck",
32
32
  "lint": "eslint --max-warnings 0",
33
33
  "lint:fix": "eslint --fix --max-warnings 0",
34
34
  "prepack": "pnpm run build",
35
- "release": "pnpm run lint && pnpm run typecheck && pnpm run build && changelogen --hideAuthorEmail --push --release && npm publish",
35
+ "release": "pnpm run lint && pnpm run typecheck && pnpm run test && pnpm run build && changelogen --hideAuthorEmail --push --release && npm publish",
36
+ "test": "vitest run --coverage",
37
+ "test:watch": "vitest watch --coverage",
36
38
  "typecheck": "tsc --noEmit",
37
39
  "unused-exports": "ts-unused-exports ./tsconfig.json"
38
40
  },
41
+ "peerDependencies": {
42
+ "eslint": "^9.35.0",
43
+ "eslint-flat-config-utils": "^2.1.1"
44
+ },
45
+ "peerDependenciesMeta": {
46
+ "eslint-flat-config-utils": {
47
+ "optional": true
48
+ }
49
+ },
39
50
  "dependencies": {
40
- "@antfu/eslint-config": "^5.2.1",
41
- "@kikiutils/eslint-plugin-tailwindcss": "^3.19.0",
51
+ "@antfu/eslint-config": "^5.3.0",
52
+ "@kikiutils/eslint-plugin-tailwindcss": "4.0.0-beta.0",
42
53
  "@kikiutils/eslint-plugin-vue": "^10.2.2",
43
- "eslint": "^9.33.0",
44
54
  "eslint-plugin-format": "^1.0.1",
45
55
  "eslint-plugin-promise": "^7.2.1",
46
- "eslint-plugin-tailwindcss": "^3.18.2"
56
+ "eslint-plugin-tailwindcss": "4.0.0-beta.0"
47
57
  },
48
58
  "devDependencies": {
49
59
  "@kikiutils/changelogen": "^0.9.0",
50
- "@kikiutils/tsconfigs": "^5.0.4",
60
+ "@kikiutils/tsconfigs": "^5.0.5",
61
+ "@vitest/coverage-v8": "^3.2.4",
51
62
  "depcheck": "^1.4.7",
52
63
  "eslint-flat-config-utils": "^2.1.1",
53
- "ts-project-builder": "^5.0.2",
64
+ "publint": "^0.3.12",
54
65
  "ts-unused-exports": "^11.0.1",
55
- "typescript": "^5.9.2"
66
+ "tsconfck": "^3.1.6",
67
+ "tsdown": "^0.15.1",
68
+ "typescript": "^5.9.2",
69
+ "unplugin-unused": "^0.5.3",
70
+ "vitest": "^3.2.4"
56
71
  },
57
72
  "pnpm": {
58
73
  "onlyBuiltDependencies": [
package/dist/index.mjs DELETED
@@ -1,416 +0,0 @@
1
- import { antfu } from '@antfu/eslint-config';
2
- import kikiutilsTailwindcss from '@kikiutils/eslint-plugin-tailwindcss';
3
- import kikiutilsEslintPluginVue from '@kikiutils/eslint-plugin-vue';
4
- import format from 'eslint-plugin-format';
5
- import promise from 'eslint-plugin-promise';
6
- import tailwindcss from 'eslint-plugin-tailwindcss';
7
-
8
- const basePerfectionistSortOptions = {
9
- ignoreCase: false,
10
- type: 'natural',
11
- };
12
- function createConfig(environment = 'node', options) {
13
- const userConfigs = [
14
- {
15
- files: ['**/*.{cjs,js,mjs,ts,tsx,vue}'],
16
- plugins: { promise },
17
- rules: {
18
- 'antfu/consistent-list-newline': [
19
- 'error',
20
- {
21
- ArrayExpression: false,
22
- ArrayPattern: false,
23
- },
24
- ],
25
- 'antfu/curly': 'off',
26
- 'antfu/if-newline': 'off',
27
- 'antfu/no-top-level-await': 'off',
28
- 'curly': [
29
- 'error',
30
- 'multi-line',
31
- ],
32
- 'max-classes-per-file': [
33
- 'error',
34
- 1,
35
- ],
36
- 'no-promise-executor-return': [
37
- 'error',
38
- { allowVoid: true },
39
- ],
40
- 'node/prefer-global/process': [
41
- 'error',
42
- 'always',
43
- ],
44
- 'perfectionist/sort-array-includes': [
45
- 'error',
46
- basePerfectionistSortOptions,
47
- ],
48
- 'perfectionist/sort-enums': [
49
- 'error',
50
- basePerfectionistSortOptions,
51
- ],
52
- 'perfectionist/sort-heritage-clauses': [
53
- 'error',
54
- {
55
- ignoreCase: false,
56
- type: 'natural',
57
- },
58
- ],
59
- 'perfectionist/sort-imports': [
60
- 'error',
61
- {
62
- environment,
63
- groups: [
64
- 'side-effect',
65
- 'side-effect-style',
66
- 'style',
67
- [
68
- 'builtin',
69
- 'builtin-type',
70
- ],
71
- [
72
- 'external',
73
- 'external-type',
74
- ],
75
- [
76
- 'internal',
77
- 'internal-type',
78
- ],
79
- [
80
- 'parent',
81
- 'parent-type',
82
- ],
83
- [
84
- 'sibling',
85
- 'sibling-type',
86
- ],
87
- [
88
- 'index',
89
- 'index-type',
90
- ],
91
- 'object',
92
- 'unknown',
93
- ],
94
- ignoreCase: false,
95
- internalPattern: [
96
- '^#.*',
97
- '^@/.*',
98
- '^~/.*',
99
- ],
100
- type: 'natural',
101
- },
102
- ],
103
- 'perfectionist/sort-interfaces': [
104
- 'error',
105
- basePerfectionistSortOptions,
106
- ],
107
- 'perfectionist/sort-intersection-types': [
108
- 'error',
109
- basePerfectionistSortOptions,
110
- ],
111
- 'perfectionist/sort-maps': [
112
- 'error',
113
- basePerfectionistSortOptions,
114
- ],
115
- 'perfectionist/sort-modules': [
116
- 'error',
117
- {
118
- ...basePerfectionistSortOptions,
119
- groups: [
120
- 'declare-type',
121
- [
122
- 'export-type',
123
- 'type',
124
- ],
125
- 'declare-interface',
126
- [
127
- 'export-interface',
128
- 'interface',
129
- ],
130
- 'declare-enum',
131
- [
132
- 'enum',
133
- 'export-enum',
134
- ],
135
- 'declare-class',
136
- [
137
- 'class',
138
- 'export-class',
139
- ],
140
- 'declare-function',
141
- [
142
- 'export-function',
143
- 'function',
144
- ],
145
- ],
146
- },
147
- ],
148
- 'perfectionist/sort-object-types': [
149
- 'error',
150
- basePerfectionistSortOptions,
151
- ],
152
- 'perfectionist/sort-objects': [
153
- 'error',
154
- basePerfectionistSortOptions,
155
- ],
156
- 'perfectionist/sort-sets': [
157
- 'error',
158
- basePerfectionistSortOptions,
159
- ],
160
- 'perfectionist/sort-switch-case': [
161
- 'error',
162
- {
163
- ignoreCase: false,
164
- type: 'natural',
165
- },
166
- ],
167
- 'perfectionist/sort-union-types': [
168
- 'error',
169
- basePerfectionistSortOptions,
170
- ],
171
- 'perfectionist/sort-variable-declarations': [
172
- 'error',
173
- basePerfectionistSortOptions,
174
- ],
175
- 'promise/no-multiple-resolved': 'error',
176
- 'promise/no-return-in-finally': 'error',
177
- 'promise/no-return-wrap': 'error',
178
- 'require-await': 'error',
179
- 'style/array-bracket-newline': [
180
- 'error',
181
- { multiline: true },
182
- ],
183
- 'style/array-element-newline': [
184
- 'error',
185
- {
186
- ArrayExpression: {
187
- consistent: true,
188
- minItems: 2,
189
- },
190
- ArrayPattern: { minItems: 3 },
191
- },
192
- ],
193
- 'style/arrow-parens': [
194
- 'error',
195
- 'always',
196
- ],
197
- 'style/brace-style': [
198
- 'error',
199
- '1tbs',
200
- { allowSingleLine: false },
201
- ],
202
- 'style/function-call-spacing': [
203
- 'error',
204
- 'never',
205
- ],
206
- 'style/indent': [
207
- 'error',
208
- 4,
209
- ],
210
- 'style/max-len': [
211
- 'warn',
212
- {
213
- code: 120,
214
- comments: 120,
215
- },
216
- ],
217
- 'style/member-delimiter-style': [
218
- 'error',
219
- {
220
- multiline: {
221
- delimiter: 'semi',
222
- requireLast: true,
223
- },
224
- },
225
- ],
226
- 'style/no-extra-parens': [
227
- 'error',
228
- 'all',
229
- { nestedBinaryExpressions: false },
230
- ],
231
- 'style/no-extra-semi': 'error',
232
- 'style/object-curly-newline': [
233
- 'error',
234
- {
235
- ExportDeclaration: {
236
- minProperties: 2,
237
- multiline: true,
238
- },
239
- ImportDeclaration: {
240
- minProperties: 2,
241
- multiline: true,
242
- },
243
- ObjectExpression: {
244
- minProperties: 2,
245
- multiline: true,
246
- },
247
- ObjectPattern: {
248
- minProperties: 3,
249
- multiline: true,
250
- },
251
- },
252
- ],
253
- 'style/operator-linebreak': [
254
- 'error',
255
- 'before',
256
- { overrides: { '=': 'after' } },
257
- ],
258
- 'style/padding-line-between-statements': [
259
- 'error',
260
- {
261
- blankLine: 'always',
262
- next: [
263
- 'class',
264
- 'enum',
265
- 'function',
266
- ],
267
- prev: '*',
268
- },
269
- {
270
- blankLine: 'always',
271
- next: '*',
272
- prev: [
273
- 'class',
274
- 'function',
275
- ],
276
- },
277
- ],
278
- 'style/semi': [
279
- 'error',
280
- 'always',
281
- ],
282
- 'ts/consistent-generic-constructors': [
283
- 'error',
284
- 'constructor',
285
- ],
286
- 'ts/no-redeclare': 'off',
287
- },
288
- },
289
- {
290
- files: ['**/*.vue'],
291
- plugins: {
292
- '@kikiutils/tailwindcss': kikiutilsTailwindcss,
293
- '@kikiutils/vue': kikiutilsEslintPluginVue,
294
- tailwindcss,
295
- },
296
- rules: {
297
- '@kikiutils/tailwindcss/classnames-order': 'error',
298
- '@kikiutils/vue/attributes-order': [
299
- 'error',
300
- { alphabetical: true },
301
- ],
302
- '@kikiutils/vue/no-extra-space-in-class': 'error',
303
- 'style/max-len': 'off',
304
- 'tailwindcss/classnames-order': 'off',
305
- 'tailwindcss/enforces-negative-arbitrary-values': 'error',
306
- 'tailwindcss/enforces-shorthand': 'error',
307
- 'tailwindcss/no-unnecessary-arbitrary-value': 'error',
308
- 'vue/attribute-hyphenation': 'error',
309
- 'vue/attributes-order': 'off',
310
- 'vue/block-order': [
311
- 'error',
312
- {
313
- order: [
314
- 'template',
315
- 'script',
316
- 'style',
317
- ],
318
- },
319
- ],
320
- 'vue/component-api-style': 'error',
321
- 'vue/define-emits-declaration': 'error',
322
- 'vue/define-props-declaration': 'error',
323
- 'vue/enforce-style-attribute': 'error',
324
- 'vue/html-closing-bracket-newline': 'error',
325
- 'vue/html-closing-bracket-spacing': 'error',
326
- 'vue/html-indent': [
327
- 'error',
328
- 4,
329
- ],
330
- 'vue/max-attributes-per-line': [
331
- 'error',
332
- {
333
- multiline: 1,
334
- singleline: 1,
335
- },
336
- ],
337
- 'vue/max-len': [
338
- 'warn',
339
- {
340
- code: 120,
341
- comments: 120,
342
- template: 120,
343
- },
344
- ],
345
- 'vue/no-dupe-keys': 'error',
346
- 'vue/no-lone-template': 'error',
347
- 'vue/no-multi-spaces': 'error',
348
- 'vue/no-multiple-objects-in-class': 'error',
349
- 'vue/no-root-v-if': 'error',
350
- 'vue/no-template-target-blank': 'error',
351
- 'vue/no-v-html': 'error',
352
- 'vue/prefer-define-options': 'error',
353
- 'vue/prefer-separate-static-class': 'error',
354
- 'vue/require-explicit-emits': 'error',
355
- 'vue/require-typed-ref': 'error',
356
- },
357
- },
358
- {
359
- files: ['**/.vscode/*.json'],
360
- rules: {
361
- 'jsonc/sort-array-values': [
362
- 'error',
363
- {
364
- order: {
365
- natural: true,
366
- type: 'asc',
367
- },
368
- pathPattern: '^.*$',
369
- },
370
- ],
371
- 'jsonc/sort-keys': [
372
- 'error',
373
- 'asc',
374
- {
375
- caseSensitive: true,
376
- natural: true,
377
- },
378
- ],
379
- },
380
- },
381
- ];
382
- if (options?.formatters && (typeof options.formatters === 'boolean' || options.formatters.css)) {
383
- userConfigs.splice(1, 0, createPrettierCssConfig('css'), createPrettierCssConfig('sass'), createPrettierCssConfig('scss'));
384
- }
385
- return antfu({
386
- typescript: true,
387
- ...options,
388
- }, ...userConfigs);
389
- }
390
- function createPrettierCssConfig(parser) {
391
- return {
392
- files: [`**/*.${parser}`],
393
- languageOptions: { parser: format.parserPlain },
394
- plugins: { format },
395
- rules: {
396
- 'format/prettier': [
397
- 'error',
398
- {
399
- parser,
400
- printWidth: 120,
401
- singleQuote: true,
402
- tabWidth: 4,
403
- },
404
- ],
405
- },
406
- };
407
- }
408
- const bun = createConfig('bun');
409
- const node = createConfig('node');
410
- const vue = createConfig('node', {
411
- formatters: { css: true },
412
- vue: true,
413
- });
414
-
415
- export { bun, createConfig, node, vue };
416
- //# sourceMappingURL=index.mjs.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.mjs","sources":["../src/index.ts"],"sourcesContent":["import { antfu } from '@antfu/eslint-config';\nimport type {\n ConfigNames,\n TypedFlatConfigItem,\n} from '@antfu/eslint-config';\n// @ts-expect-error No declare file.\nimport kikiutilsTailwindcss from '@kikiutils/eslint-plugin-tailwindcss';\n// @ts-expect-error Ignore this error.\nimport kikiutilsEslintPluginVue from '@kikiutils/eslint-plugin-vue';\nimport type { FlatConfigComposer } from 'eslint-flat-config-utils';\nimport format from 'eslint-plugin-format';\n// @ts-expect-error No declare file.\nimport promise from 'eslint-plugin-promise';\n// @ts-expect-error No declare file.\nimport tailwindcss from 'eslint-plugin-tailwindcss';\n\nconst basePerfectionistSortOptions = {\n ignoreCase: false,\n type: 'natural',\n} as const;\n\nexport function createConfig(\n environment: 'bun' | 'node' = 'node',\n options?: Parameters<typeof antfu>[0],\n): FlatConfigComposer<TypedFlatConfigItem, ConfigNames> {\n const userConfigs: Parameters<typeof antfu>[1] = [\n {\n files: ['**/*.{cjs,js,mjs,ts,tsx,vue}'],\n plugins: { promise },\n rules: {\n 'antfu/consistent-list-newline': [\n 'error',\n {\n ArrayExpression: false,\n ArrayPattern: false,\n },\n ],\n 'antfu/curly': 'off',\n 'antfu/if-newline': 'off',\n 'antfu/no-top-level-await': 'off',\n 'curly': [\n 'error',\n 'multi-line',\n ],\n 'max-classes-per-file': [\n 'error',\n 1,\n ],\n 'no-promise-executor-return': [\n 'error',\n { allowVoid: true },\n ],\n 'node/prefer-global/process': [\n 'error',\n 'always',\n ],\n 'perfectionist/sort-array-includes': [\n 'error',\n basePerfectionistSortOptions,\n ],\n 'perfectionist/sort-enums': [\n 'error',\n basePerfectionistSortOptions,\n ],\n 'perfectionist/sort-heritage-clauses': [\n 'error',\n {\n ignoreCase: false,\n type: 'natural',\n },\n ],\n 'perfectionist/sort-imports': [\n 'error',\n {\n environment,\n groups: [\n 'side-effect',\n 'side-effect-style',\n 'style',\n [\n 'builtin',\n 'builtin-type',\n ],\n [\n 'external',\n 'external-type',\n ],\n [\n 'internal',\n 'internal-type',\n ],\n [\n 'parent',\n 'parent-type',\n ],\n [\n 'sibling',\n 'sibling-type',\n ],\n [\n 'index',\n 'index-type',\n ],\n 'object',\n 'unknown',\n ],\n ignoreCase: false,\n internalPattern: [\n '^#.*',\n '^@/.*',\n '^~/.*',\n ],\n type: 'natural',\n },\n ],\n 'perfectionist/sort-interfaces': [\n 'error',\n basePerfectionistSortOptions,\n ],\n 'perfectionist/sort-intersection-types': [\n 'error',\n basePerfectionistSortOptions,\n ],\n 'perfectionist/sort-maps': [\n 'error',\n basePerfectionistSortOptions,\n ],\n 'perfectionist/sort-modules': [\n 'error',\n {\n ...basePerfectionistSortOptions,\n groups: [\n 'declare-type',\n [\n 'export-type',\n 'type',\n ],\n 'declare-interface',\n [\n 'export-interface',\n 'interface',\n ],\n 'declare-enum',\n [\n 'enum',\n 'export-enum',\n ],\n 'declare-class',\n [\n 'class',\n 'export-class',\n ],\n 'declare-function',\n [\n 'export-function',\n 'function',\n ],\n ],\n },\n ],\n 'perfectionist/sort-object-types': [\n 'error',\n basePerfectionistSortOptions,\n ],\n 'perfectionist/sort-objects': [\n 'error',\n basePerfectionistSortOptions,\n ],\n 'perfectionist/sort-sets': [\n 'error',\n basePerfectionistSortOptions,\n ],\n 'perfectionist/sort-switch-case': [\n 'error',\n {\n ignoreCase: false,\n type: 'natural',\n },\n ],\n 'perfectionist/sort-union-types': [\n 'error',\n basePerfectionistSortOptions,\n ],\n 'perfectionist/sort-variable-declarations': [\n 'error',\n basePerfectionistSortOptions,\n ],\n 'promise/no-multiple-resolved': 'error',\n 'promise/no-return-in-finally': 'error',\n 'promise/no-return-wrap': 'error',\n 'require-await': 'error',\n 'style/array-bracket-newline': [\n 'error',\n { multiline: true },\n ],\n 'style/array-element-newline': [\n 'error',\n {\n ArrayExpression: {\n consistent: true,\n minItems: 2,\n },\n ArrayPattern: { minItems: 3 },\n },\n ],\n 'style/arrow-parens': [\n 'error',\n 'always',\n ],\n 'style/brace-style': [\n 'error',\n '1tbs',\n { allowSingleLine: false },\n ],\n 'style/function-call-spacing': [\n 'error',\n 'never',\n ],\n 'style/indent': [\n 'error',\n 4,\n ],\n 'style/max-len': [\n 'warn',\n {\n code: 120,\n comments: 120,\n },\n ],\n 'style/member-delimiter-style': [\n 'error',\n {\n multiline: {\n delimiter: 'semi',\n requireLast: true,\n },\n },\n ],\n 'style/no-extra-parens': [\n 'error',\n 'all',\n { nestedBinaryExpressions: false },\n ],\n 'style/no-extra-semi': 'error',\n 'style/object-curly-newline': [\n 'error',\n {\n ExportDeclaration: {\n minProperties: 2,\n multiline: true,\n },\n ImportDeclaration: {\n minProperties: 2,\n multiline: true,\n },\n ObjectExpression: {\n minProperties: 2,\n multiline: true,\n },\n ObjectPattern: {\n minProperties: 3,\n multiline: true,\n },\n },\n ],\n 'style/operator-linebreak': [\n 'error',\n 'before',\n { overrides: { '=': 'after' } },\n ],\n 'style/padding-line-between-statements': [\n 'error',\n {\n blankLine: 'always',\n next: [\n 'class',\n 'enum',\n 'function',\n ],\n prev: '*',\n },\n {\n blankLine: 'always',\n next: '*',\n prev: [\n 'class',\n 'function',\n ],\n },\n ],\n 'style/semi': [\n 'error',\n 'always',\n ],\n 'ts/consistent-generic-constructors': [\n 'error',\n 'constructor',\n ],\n 'ts/no-redeclare': 'off',\n },\n },\n {\n files: ['**/*.vue'],\n plugins: {\n '@kikiutils/tailwindcss': kikiutilsTailwindcss,\n '@kikiutils/vue': kikiutilsEslintPluginVue,\n tailwindcss,\n },\n rules: {\n '@kikiutils/tailwindcss/classnames-order': 'error',\n '@kikiutils/vue/attributes-order': [\n 'error',\n { alphabetical: true },\n ],\n '@kikiutils/vue/no-extra-space-in-class': 'error',\n 'style/max-len': 'off',\n 'tailwindcss/classnames-order': 'off',\n 'tailwindcss/enforces-negative-arbitrary-values': 'error',\n 'tailwindcss/enforces-shorthand': 'error',\n 'tailwindcss/no-unnecessary-arbitrary-value': 'error',\n 'vue/attribute-hyphenation': 'error',\n 'vue/attributes-order': 'off',\n 'vue/block-order': [\n 'error',\n {\n order: [\n 'template',\n 'script',\n 'style',\n ],\n },\n ],\n 'vue/component-api-style': 'error',\n 'vue/define-emits-declaration': 'error',\n 'vue/define-props-declaration': 'error',\n 'vue/enforce-style-attribute': 'error',\n 'vue/html-closing-bracket-newline': 'error',\n 'vue/html-closing-bracket-spacing': 'error',\n 'vue/html-indent': [\n 'error',\n 4,\n ],\n 'vue/max-attributes-per-line': [\n 'error',\n {\n multiline: 1,\n singleline: 1,\n },\n ],\n 'vue/max-len': [\n 'warn',\n {\n code: 120,\n comments: 120,\n template: 120,\n },\n ],\n 'vue/no-dupe-keys': 'error',\n 'vue/no-lone-template': 'error',\n 'vue/no-multi-spaces': 'error',\n 'vue/no-multiple-objects-in-class': 'error',\n 'vue/no-root-v-if': 'error',\n 'vue/no-template-target-blank': 'error',\n 'vue/no-v-html': 'error',\n 'vue/prefer-define-options': 'error',\n 'vue/prefer-separate-static-class': 'error',\n 'vue/require-explicit-emits': 'error',\n 'vue/require-typed-ref': 'error',\n },\n },\n {\n files: ['**/.vscode/*.json'],\n rules: {\n 'jsonc/sort-array-values': [\n 'error',\n {\n order: {\n natural: true,\n type: 'asc',\n },\n pathPattern: '^.*$',\n },\n ],\n 'jsonc/sort-keys': [\n 'error',\n 'asc',\n {\n caseSensitive: true,\n natural: true,\n },\n ],\n },\n },\n ];\n\n if (options?.formatters && (typeof options.formatters === 'boolean' || options.formatters.css)) {\n userConfigs.splice(\n 1,\n 0,\n createPrettierCssConfig('css'),\n createPrettierCssConfig('sass'),\n createPrettierCssConfig('scss'),\n );\n }\n\n return antfu(\n {\n typescript: true,\n ...options,\n },\n ...userConfigs,\n );\n}\n\nfunction createPrettierCssConfig(parser: 'css' | 'sass' | 'scss'): TypedFlatConfigItem {\n return {\n files: [`**/*.${parser}`],\n languageOptions: { parser: format.parserPlain },\n plugins: { format },\n rules: {\n 'format/prettier': [\n 'error',\n {\n parser,\n printWidth: 120,\n singleQuote: true,\n tabWidth: 4,\n },\n ],\n },\n };\n}\n\nexport const bun = createConfig('bun');\nexport const node = createConfig('node');\nexport const vue = createConfig(\n 'node',\n {\n formatters: { css: true },\n vue: true,\n },\n);\n"],"names":[],"mappings":"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"}