@lichthagel/eslint-config 1.0.30 → 1.0.31

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 CHANGED
@@ -1,526 +1,485 @@
1
- // src/configs/browser.ts
2
1
  import globals from "globals";
3
- var browser_default = [
4
- {
5
- name: "lichthagel/browser",
6
- languageOptions: {
7
- globals: {
8
- ...globals.browser,
9
- document: "readonly",
10
- navigator: "readonly",
11
- window: "readonly"
12
- }
13
- }
14
- }
15
- ];
16
-
17
- // src/configs/javascript.ts
18
2
  import js from "@eslint/js";
19
- import globals2 from "globals";
20
- var javascript_default = [
21
- { name: "js/recommended", ...js.configs.recommended },
22
- {
23
- name: "lichthagel/javascript",
24
- languageOptions: {
25
- ecmaVersion: 2022,
26
- globals: {
27
- ...globals2.es2022
28
- },
29
- parserOptions: {
30
- ecmaVersion: 2022,
31
- sourceType: "module"
32
- },
33
- sourceType: "module"
34
- },
35
- rules: {
36
- "accessor-pairs": "error",
37
- "array-callback-return": "error",
38
- "arrow-body-style": "error",
39
- "block-scoped-var": "error",
40
- "curly": ["error", "all"],
41
- "default-case-last": "error",
42
- "dot-notation": "error",
43
- "eqeqeq": ["error", "smart"],
44
- "new-cap": [
45
- "error",
46
- {
47
- capIsNew: false,
48
- newIsCap: true,
49
- properties: true
50
- }
51
- ],
52
- "no-alert": "error",
53
- "no-array-constructor": "error",
54
- "no-await-in-loop": "error",
55
- "no-bitwise": "error",
56
- "no-caller": "error",
57
- "no-cond-assign": ["error", "always"],
58
- "no-console": ["error", { allow: ["warn", "error"] }],
59
- "no-duplicate-imports": "error",
60
- "no-eval": "error",
61
- "no-extend-native": "error",
62
- "no-extra-bind": "error",
63
- "no-implied-eval": "error",
64
- "no-iterator": "error",
65
- "no-label-var": "error",
66
- "no-labels": "error",
67
- "no-lone-blocks": "error",
68
- "no-multi-assign": "error",
69
- "no-multi-str": "error",
70
- "no-new": "error",
71
- "no-new-func": "error",
72
- "no-new-wrappers": "error",
73
- "no-octal-escape": "error",
74
- "no-promise-executor-return": ["error", { allowVoid: true }],
75
- "no-proto": "error",
76
- "no-restricted-globals": ["error", { name: "global", message: "Use `globalThis` instead." }, { name: "self", message: "Use `globalThis` instead." }],
77
- "no-restricted-properties": [
78
- "error",
79
- { message: "Use `Object.getPrototypeOf` or `Object.setPrototypeOf` instead.", property: "__proto__" },
80
- { message: "Use `Object.defineProperty` instead.", property: "__defineGetter__" },
81
- { message: "Use `Object.defineProperty` instead.", property: "__defineSetter__" },
82
- { message: "Use `Object.getOwnPropertyDescriptor` instead.", property: "__lookupGetter__" },
83
- { message: "Use `Object.getOwnPropertyDescriptor` instead.", property: "__lookupSetter__" }
84
- ],
85
- "no-restricted-syntax": [
86
- "error",
87
- "DebuggerStatement",
88
- "LabeledStatement",
89
- "WithStatement",
90
- "TSEnumDeclaration[const=true]",
91
- "TSExportAssignment"
92
- ],
93
- "no-self-compare": "error",
94
- "no-sequences": "error",
95
- "no-template-curly-in-string": "error",
96
- "no-throw-literal": "error",
97
- "no-undef-init": "error",
98
- "no-unmodified-loop-condition": "error",
99
- "no-unneeded-ternary": "error",
100
- "no-unreachable-loop": "error",
101
- "no-unused-expressions": ["error", { allowShortCircuit: true, allowTaggedTemplates: true, allowTernary: true }],
102
- "no-useless-call": "error",
103
- "no-useless-computed-key": "error",
104
- "no-useless-concat": "error",
105
- "no-useless-constructor": "error",
106
- "no-useless-rename": "error",
107
- "no-useless-return": "error",
108
- "no-var": "error",
109
- "object-shorthand": ["error", "always", { ignoreConstructors: false }],
110
- "prefer-arrow-callback": "error",
111
- "prefer-const": "error",
112
- "prefer-destructuring": ["error", { AssignmentExpression: { array: false, object: false } }],
113
- "prefer-exponentiation-operator": "error",
114
- "prefer-object-spread": "error",
115
- "prefer-promise-reject-errors": "error",
116
- "prefer-regex-literals": ["error", { disallowRedundantWrapping: true }],
117
- "prefer-rest-params": "error",
118
- "prefer-spread": "error",
119
- "prefer-template": "error",
120
- "require-await": "error",
121
- "sort-imports": [
122
- "error",
123
- {
124
- allowSeparatedGroups: true,
125
- ignoreCase: false,
126
- ignoreDeclarationSort: true
127
- }
128
- ],
129
- "symbol-description": "error",
130
- "use-isnan": ["error", { enforceForIndexOf: true, enforceForSwitchCase: true }],
131
- "valid-typeof": ["error", { requireStringLiterals: true }],
132
- "yoda": "error"
133
- }
134
- }
135
- ];
3
+ import perfectionst from "eslint-plugin-perfectionist";
4
+ import stylistic from "@stylistic/eslint-plugin";
5
+ import ts from "typescript-eslint";
6
+ import unicornPlugin from "eslint-plugin-unicorn";
7
+
8
+ //#region src/configs/browser.ts
9
+ var browser_default = [{
10
+ name: "lichthagel/browser",
11
+ languageOptions: { globals: {
12
+ ...globals.browser,
13
+ document: "readonly",
14
+ navigator: "readonly",
15
+ window: "readonly"
16
+ } }
17
+ }];
18
+
19
+ //#endregion
20
+ //#region src/configs/javascript.ts
21
+ var javascript_default = [{
22
+ name: "js/recommended",
23
+ ...js.configs.recommended
24
+ }, {
25
+ name: "lichthagel/javascript",
26
+ languageOptions: {
27
+ ecmaVersion: 2022,
28
+ globals: { ...globals.es2022 },
29
+ parserOptions: {
30
+ ecmaVersion: 2022,
31
+ sourceType: "module"
32
+ },
33
+ sourceType: "module"
34
+ },
35
+ rules: {
36
+ "accessor-pairs": "error",
37
+ "array-callback-return": "error",
38
+ "arrow-body-style": "error",
39
+ "block-scoped-var": "error",
40
+ "curly": ["error", "all"],
41
+ "default-case-last": "error",
42
+ "dot-notation": "error",
43
+ "eqeqeq": ["error", "smart"],
44
+ "new-cap": ["error", {
45
+ capIsNew: false,
46
+ newIsCap: true,
47
+ properties: true
48
+ }],
49
+ "no-alert": "error",
50
+ "no-array-constructor": "error",
51
+ "no-await-in-loop": "error",
52
+ "no-bitwise": "error",
53
+ "no-caller": "error",
54
+ "no-cond-assign": ["error", "always"],
55
+ "no-console": ["error", { allow: ["warn", "error"] }],
56
+ "no-duplicate-imports": "error",
57
+ "no-eval": "error",
58
+ "no-extend-native": "error",
59
+ "no-extra-bind": "error",
60
+ "no-implied-eval": "error",
61
+ "no-iterator": "error",
62
+ "no-label-var": "error",
63
+ "no-labels": "error",
64
+ "no-lone-blocks": "error",
65
+ "no-multi-assign": "error",
66
+ "no-multi-str": "error",
67
+ "no-new": "error",
68
+ "no-new-func": "error",
69
+ "no-new-wrappers": "error",
70
+ "no-octal-escape": "error",
71
+ "no-promise-executor-return": ["error", { allowVoid: true }],
72
+ "no-proto": "error",
73
+ "no-restricted-globals": [
74
+ "error",
75
+ {
76
+ name: "global",
77
+ message: "Use `globalThis` instead."
78
+ },
79
+ {
80
+ name: "self",
81
+ message: "Use `globalThis` instead."
82
+ }
83
+ ],
84
+ "no-restricted-properties": [
85
+ "error",
86
+ {
87
+ message: "Use `Object.getPrototypeOf` or `Object.setPrototypeOf` instead.",
88
+ property: "__proto__"
89
+ },
90
+ {
91
+ message: "Use `Object.defineProperty` instead.",
92
+ property: "__defineGetter__"
93
+ },
94
+ {
95
+ message: "Use `Object.defineProperty` instead.",
96
+ property: "__defineSetter__"
97
+ },
98
+ {
99
+ message: "Use `Object.getOwnPropertyDescriptor` instead.",
100
+ property: "__lookupGetter__"
101
+ },
102
+ {
103
+ message: "Use `Object.getOwnPropertyDescriptor` instead.",
104
+ property: "__lookupSetter__"
105
+ }
106
+ ],
107
+ "no-restricted-syntax": [
108
+ "error",
109
+ "DebuggerStatement",
110
+ "LabeledStatement",
111
+ "WithStatement",
112
+ "TSEnumDeclaration[const=true]",
113
+ "TSExportAssignment"
114
+ ],
115
+ "no-self-compare": "error",
116
+ "no-sequences": "error",
117
+ "no-template-curly-in-string": "error",
118
+ "no-throw-literal": "error",
119
+ "no-undef-init": "error",
120
+ "no-unmodified-loop-condition": "error",
121
+ "no-unneeded-ternary": "error",
122
+ "no-unreachable-loop": "error",
123
+ "no-unused-expressions": ["error", {
124
+ allowShortCircuit: true,
125
+ allowTaggedTemplates: true,
126
+ allowTernary: true
127
+ }],
128
+ "no-useless-call": "error",
129
+ "no-useless-computed-key": "error",
130
+ "no-useless-concat": "error",
131
+ "no-useless-constructor": "error",
132
+ "no-useless-rename": "error",
133
+ "no-useless-return": "error",
134
+ "no-var": "error",
135
+ "object-shorthand": [
136
+ "error",
137
+ "always",
138
+ { ignoreConstructors: false }
139
+ ],
140
+ "prefer-arrow-callback": "error",
141
+ "prefer-const": "error",
142
+ "prefer-destructuring": ["error", { AssignmentExpression: {
143
+ array: false,
144
+ object: false
145
+ } }],
146
+ "prefer-exponentiation-operator": "error",
147
+ "prefer-object-spread": "error",
148
+ "prefer-promise-reject-errors": "error",
149
+ "prefer-regex-literals": ["error", { disallowRedundantWrapping: true }],
150
+ "prefer-rest-params": "error",
151
+ "prefer-spread": "error",
152
+ "prefer-template": "error",
153
+ "require-await": "error",
154
+ "sort-imports": ["error", {
155
+ allowSeparatedGroups: true,
156
+ ignoreCase: false,
157
+ ignoreDeclarationSort: true
158
+ }],
159
+ "symbol-description": "error",
160
+ "use-isnan": ["error", {
161
+ enforceForIndexOf: true,
162
+ enforceForSwitchCase: true
163
+ }],
164
+ "valid-typeof": ["error", { requireStringLiterals: true }],
165
+ "yoda": "error"
166
+ }
167
+ }];
136
168
 
137
- // src/configs/node.ts
138
- import globals3 from "globals";
139
- var node = async () => {
140
- const pluginN = await import("eslint-plugin-n").then((mod) => mod.default);
141
- return [
142
- pluginN.configs["flat/recommended-module"],
143
- {
144
- name: "lichthagel/node",
145
- languageOptions: {
146
- globals: {
147
- ...globals3.node
148
- }
149
- },
150
- rules: {
151
- "n/handle-callback-err": ["error", "^.*(e|E)rr(or)?$"],
152
- "n/no-new-require": "error",
153
- "n/no-path-concat": "error",
154
- "n/no-process-env": "error",
155
- "n/no-missing-import": "off",
156
- "n/no-missing-require": "off"
157
- }
158
- }
159
- ];
169
+ //#endregion
170
+ //#region src/configs/node.ts
171
+ const node = async () => {
172
+ return [(await import("eslint-plugin-n").then((mod) => mod.default)).configs["flat/recommended-module"], {
173
+ name: "lichthagel/node",
174
+ languageOptions: { globals: { ...globals.node } },
175
+ rules: {
176
+ "n/handle-callback-err": ["error", "^.*(e|E)rr(or)?$"],
177
+ "n/no-new-require": "error",
178
+ "n/no-path-concat": "error",
179
+ "n/no-process-env": "error",
180
+ "n/no-missing-import": "off",
181
+ "n/no-missing-require": "off"
182
+ }
183
+ }];
160
184
  };
161
185
  var node_default = node;
162
186
 
163
- // src/configs/perfectionist.ts
164
- import perfectionst from "eslint-plugin-perfectionist";
165
- var perfectionist_default = [
166
- {
167
- name: "perfectionist/recommended-natural",
168
- ...perfectionst.configs["recommended-natural"]
169
- },
170
- {
171
- name: "lichthagel/perfectionist",
172
- rules: {
173
- "perfectionist/sort-imports": [
174
- "error",
175
- {
176
- type: "natural",
177
- internalPattern: [
178
- "^@/.*",
179
- "^~.*",
180
- "^$.*",
181
- "^#.*"
182
- ]
183
- }
184
- ],
185
- "perfectionist/sort-object-types": "off",
186
- "perfectionist/sort-objects": [
187
- "off",
188
- {
189
- customGroups: [
190
- {
191
- groupName: "id",
192
- elementNamePattern: "^(?:id|uuid|key|index|slug)$"
193
- },
194
- {
195
- groupName: "name",
196
- elementNamePattern: "^(?:name|title|label)$"
197
- }
198
- ],
199
- groups: ["id", "unknown"],
200
- partitionByComment: true,
201
- partitionByNewLine: true
202
- }
203
- ],
204
- "perfectionist/sort-union-types": [
205
- "error",
206
- {
207
- groups: [
208
- "named",
209
- ["intersection", "union"],
210
- "unknown",
211
- "nullish"
212
- ]
213
- }
214
- ],
215
- "sort-imports": "off"
216
- }
217
- }
218
- ];
187
+ //#endregion
188
+ //#region src/configs/perfectionist.ts
189
+ var perfectionist_default = [{
190
+ name: "perfectionist/recommended-natural",
191
+ ...perfectionst.configs["recommended-natural"]
192
+ }, {
193
+ name: "lichthagel/perfectionist",
194
+ rules: {
195
+ "perfectionist/sort-imports": ["error", {
196
+ type: "natural",
197
+ internalPattern: [
198
+ "^@/.*",
199
+ "^~.*",
200
+ "^$.*",
201
+ "^#.*"
202
+ ]
203
+ }],
204
+ "perfectionist/sort-object-types": "off",
205
+ "perfectionist/sort-objects": ["off", {
206
+ customGroups: [{
207
+ groupName: "id",
208
+ elementNamePattern: "^(?:id|uuid|key|index|slug)$"
209
+ }, {
210
+ groupName: "name",
211
+ elementNamePattern: "^(?:name|title|label)$"
212
+ }],
213
+ groups: ["id", "unknown"],
214
+ partitionByComment: true,
215
+ partitionByNewLine: true
216
+ }],
217
+ "perfectionist/sort-union-types": ["error", { groups: [
218
+ "named",
219
+ ["intersection", "union"],
220
+ "unknown",
221
+ "nullish"
222
+ ] }],
223
+ "sort-imports": "off"
224
+ }
225
+ }];
219
226
 
220
- // src/configs/solid.ts
221
- var solid = async (options = {}) => {
222
- const {
223
- withTypescript = false
224
- } = options;
225
- const configSolid = await import("eslint-plugin-solid/configs/recommended").then((mod) => mod.default);
226
- return [
227
- {
228
- name: "solid/recommended",
229
- files: ["**/*.jsx", ...withTypescript ? ["**/*.tsx"] : []],
230
- ...configSolid
231
- }
232
- ];
227
+ //#endregion
228
+ //#region src/configs/solid.ts
229
+ const solid = async (options = {}) => {
230
+ const { withTypescript = false } = options;
231
+ const configSolid = await import("eslint-plugin-solid/configs/recommended").then((mod) => mod.default);
232
+ return [{
233
+ name: "solid/recommended",
234
+ files: ["**/*.jsx", ...withTypescript ? ["**/*.tsx"] : []],
235
+ ...configSolid
236
+ }];
233
237
  };
234
238
  var solid_default = solid;
235
239
 
236
- // src/configs/stylistic.ts
237
- import stylistic from "@stylistic/eslint-plugin";
238
- var stylistic_default = [
239
- {
240
- name: "stylistic/custom",
241
- ...stylistic.configs.customize({
242
- arrowParens: true,
243
- braceStyle: "1tbs",
244
- commaDangle: "always-multiline",
245
- indent: 2,
246
- jsx: true,
247
- quoteProps: "consistent-as-needed",
248
- quotes: "double",
249
- semi: true
250
- })
251
- },
252
- {
253
- name: "lichthagel/stylistic",
254
- rules: {
255
- // JavaScript
256
- "@stylistic/array-bracket-newline": ["error", { minItems: 4, multiline: true }],
257
- "@stylistic/array-element-newline": ["error", { minItems: 4, multiline: true }],
258
- "@stylistic/curly-newline": ["error", { consistent: true }],
259
- "@stylistic/function-call-argument-newline": ["error", "consistent"],
260
- "@stylistic/function-call-spacing": ["error", "never"],
261
- "@stylistic/function-paren-newline": ["error", "multiline-arguments"],
262
- "@stylistic/generator-star-spacing": ["error", { after: false, before: true }],
263
- "@stylistic/implicit-arrow-linebreak": ["off", "beside"],
264
- "@stylistic/lines-around-comment": [
265
- "error",
266
- {
267
- afterHashbangComment: true,
268
- allowArrayStart: true,
269
- allowBlockStart: true,
270
- allowClassStart: true,
271
- allowEnumStart: true,
272
- allowInterfaceStart: true,
273
- allowModuleStart: true,
274
- allowObjectStart: true,
275
- allowTypeStart: true,
276
- applyDefaultIgnorePatterns: true,
277
- beforeBlockComment: true
278
- }
279
- ],
280
- "@stylistic/lines-between-class-members": ["error", "always", { exceptAfterSingleLine: false }],
281
- "@stylistic/multiline-ternary": ["error", "always-multiline"],
282
- "@stylistic/newline-per-chained-call": ["error", { ignoreChainWithDepth: 2 }],
283
- "@stylistic/no-extra-semi": "error",
284
- "@stylistic/nonblock-statement-body-position": ["error", "beside"],
285
- "@stylistic/object-curly-newline": ["error", { consistent: true, minProperties: 4, multiline: true }],
286
- "@stylistic/object-property-newline": ["error", { allowAllPropertiesOnSameLine: true }],
287
- "@stylistic/one-var-declaration-per-line": ["error", "always"],
288
- "@stylistic/operator-linebreak": ["error", "before"],
289
- "@stylistic/semi-style": ["error", "last"],
290
- "@stylistic/switch-colon-spacing": ["error", { after: true, before: false }],
291
- // JSX
292
- "@stylistic/jsx-closing-bracket-location": ["error", "line-aligned"],
293
- "@stylistic/jsx-curly-brace-presence": ["error", { children: "never", propElementValues: "always", props: "never" }],
294
- "@stylistic/jsx-pascal-case": "error",
295
- "@stylistic/jsx-props-no-multi-spaces": "error",
296
- "@stylistic/jsx-self-closing-comp": "error"
297
- }
298
- }
299
- ];
240
+ //#endregion
241
+ //#region src/configs/stylistic.ts
242
+ var stylistic_default = [{
243
+ name: "stylistic/custom",
244
+ ...stylistic.configs.customize({
245
+ arrowParens: true,
246
+ braceStyle: "1tbs",
247
+ commaDangle: "always-multiline",
248
+ indent: 2,
249
+ jsx: true,
250
+ quoteProps: "consistent-as-needed",
251
+ quotes: "double",
252
+ semi: true
253
+ })
254
+ }, {
255
+ name: "lichthagel/stylistic",
256
+ rules: {
257
+ "@stylistic/array-bracket-newline": ["error", {
258
+ minItems: 4,
259
+ multiline: true
260
+ }],
261
+ "@stylistic/array-element-newline": ["error", {
262
+ minItems: 4,
263
+ multiline: true
264
+ }],
265
+ "@stylistic/curly-newline": ["error", { consistent: true }],
266
+ "@stylistic/function-call-argument-newline": ["error", "consistent"],
267
+ "@stylistic/function-call-spacing": ["error", "never"],
268
+ "@stylistic/function-paren-newline": ["error", "multiline-arguments"],
269
+ "@stylistic/generator-star-spacing": ["error", {
270
+ after: false,
271
+ before: true
272
+ }],
273
+ "@stylistic/implicit-arrow-linebreak": ["off", "beside"],
274
+ "@stylistic/lines-around-comment": ["error", {
275
+ afterHashbangComment: true,
276
+ allowArrayStart: true,
277
+ allowBlockStart: true,
278
+ allowClassStart: true,
279
+ allowEnumStart: true,
280
+ allowInterfaceStart: true,
281
+ allowModuleStart: true,
282
+ allowObjectStart: true,
283
+ allowTypeStart: true,
284
+ applyDefaultIgnorePatterns: true,
285
+ beforeBlockComment: true
286
+ }],
287
+ "@stylistic/lines-between-class-members": [
288
+ "error",
289
+ "always",
290
+ { exceptAfterSingleLine: false }
291
+ ],
292
+ "@stylistic/multiline-ternary": ["error", "always-multiline"],
293
+ "@stylistic/newline-per-chained-call": ["error", { ignoreChainWithDepth: 2 }],
294
+ "@stylistic/no-extra-semi": "error",
295
+ "@stylistic/no-multi-spaces": "error",
296
+ "@stylistic/nonblock-statement-body-position": ["error", "beside"],
297
+ "@stylistic/object-curly-newline": ["error", {
298
+ consistent: true,
299
+ minProperties: 4,
300
+ multiline: true
301
+ }],
302
+ "@stylistic/object-property-newline": ["error", { allowAllPropertiesOnSameLine: true }],
303
+ "@stylistic/one-var-declaration-per-line": ["error", "always"],
304
+ "@stylistic/operator-linebreak": ["error", "before"],
305
+ "@stylistic/semi-style": ["error", "last"],
306
+ "@stylistic/switch-colon-spacing": ["error", {
307
+ after: true,
308
+ before: false
309
+ }],
310
+ "@stylistic/jsx-closing-bracket-location": ["error", "line-aligned"],
311
+ "@stylistic/jsx-curly-brace-presence": ["error", {
312
+ children: "never",
313
+ propElementValues: "always",
314
+ props: "never"
315
+ }],
316
+ "@stylistic/jsx-pascal-case": "error",
317
+ "@stylistic/jsx-self-closing-comp": "error"
318
+ }
319
+ }];
300
320
 
301
- // src/configs/svelte.ts
302
- var SVELTE_FILES = ["**/*.svelte"];
303
- var svelte = async (options = {}) => {
304
- const {
305
- disableStylistic = false,
306
- withTypescript = false
307
- } = options;
308
- const pluginSvelte = await import("eslint-plugin-svelte").then((mod) => mod.default);
309
- const configs = [
310
- ...pluginSvelte.configs["flat/recommended"].map((configItem) => ({
311
- name: "svelte/recommended",
312
- ...configItem
313
- })),
314
- {
315
- name: "lichthagel/svelte",
316
- files: SVELTE_FILES,
317
- languageOptions: {
318
- parserOptions: {
319
- extraFileExtensions: [".svelte"],
320
- parser: withTypescript ? "@typescript-eslint/parser" : null,
321
- project: true
322
- }
323
- },
324
- rules: {
325
- "svelte/block-lang": [
326
- "error",
327
- {
328
- enforceScriptPresent: false,
329
- enforceStylePresent: false,
330
- script: [withTypescript ? "ts" : null]
331
- }
332
- ],
333
- "svelte/first-attribute-linebreak": [
334
- "error",
335
- {
336
- multiline: "below",
337
- singleline: "beside"
338
- }
339
- ],
340
- "svelte/html-closing-bracket-spacing": [
341
- "error",
342
- {
343
- endTag: "never",
344
- selfClosingTag: "always",
345
- startTag: "never"
346
- }
347
- ],
348
- "svelte/html-quotes": [
349
- "error",
350
- {
351
- prefer: "double"
352
- }
353
- ],
354
- "svelte/indent": [
355
- "error",
356
- {
357
- alignAttributesVertically: true,
358
- indent: 2
359
- }
360
- ],
361
- "svelte/infinite-reactive-loop": "error",
362
- "svelte/max-attributes-per-line": [
363
- "error",
364
- {
365
- multiline: 1,
366
- singleline: 3
367
- }
368
- ],
369
- "svelte/mustache-spacing": "error",
370
- "svelte/no-dupe-on-directives": "error",
371
- "svelte/no-dupe-use-directives": "error",
372
- "svelte/no-export-load-in-svelte-module-in-kit-pages": "error",
373
- "svelte/no-goto-without-base": "error",
374
- "svelte/no-ignored-unsubscribe": "error",
375
- "svelte/no-immutable-reactive-statements": "error",
376
- "svelte/no-reactive-functions": "error",
377
- "svelte/no-reactive-literals": "error",
378
- "svelte/no-spaces-around-equal-signs-in-attribute": "error",
379
- "svelte/no-target-blank": "error",
380
- "svelte/no-trailing-spaces": "error",
381
- "svelte/no-useless-mustaches": "error",
382
- "svelte/require-store-callbacks-use-set-param": "error",
383
- "svelte/spaced-html-comment": ["error", "always"],
384
- "svelte/valid-each-key": "error",
385
- ...disableStylistic ? {
386
- "@stylistic/indent": "off",
387
- // superseded by svelte/indent
388
- "@stylistic/indent-binary-ops": "off",
389
- // superseded by svelte/indent
390
- "@stylistic/no-trailing-spaces": "off"
391
- // superseded by svelte/no-trailing-spaces
392
- } : {}
393
- }
394
- }
395
- ];
396
- return configs;
321
+ //#endregion
322
+ //#region src/configs/svelte.ts
323
+ const SVELTE_FILES = ["**/*.svelte"];
324
+ const svelte = async (options = {}) => {
325
+ const { disableStylistic = false, withTypescript = false } = options;
326
+ return [...(await import("eslint-plugin-svelte").then((mod) => mod.default)).configs["flat/recommended"].map((configItem) => ({
327
+ name: "svelte/recommended",
328
+ ...configItem
329
+ })), {
330
+ name: "lichthagel/svelte",
331
+ files: SVELTE_FILES,
332
+ languageOptions: { parserOptions: {
333
+ extraFileExtensions: [".svelte"],
334
+ parser: withTypescript ? "@typescript-eslint/parser" : null,
335
+ project: true
336
+ } },
337
+ rules: {
338
+ "svelte/block-lang": ["error", {
339
+ enforceScriptPresent: false,
340
+ enforceStylePresent: false,
341
+ script: [withTypescript ? "ts" : null]
342
+ }],
343
+ "svelte/first-attribute-linebreak": ["error", {
344
+ multiline: "below",
345
+ singleline: "beside"
346
+ }],
347
+ "svelte/html-closing-bracket-spacing": ["error", {
348
+ endTag: "never",
349
+ selfClosingTag: "always",
350
+ startTag: "never"
351
+ }],
352
+ "svelte/html-quotes": ["error", { prefer: "double" }],
353
+ "svelte/indent": ["error", {
354
+ alignAttributesVertically: true,
355
+ indent: 2
356
+ }],
357
+ "svelte/infinite-reactive-loop": "error",
358
+ "svelte/max-attributes-per-line": ["error", {
359
+ multiline: 1,
360
+ singleline: 3
361
+ }],
362
+ "svelte/mustache-spacing": "error",
363
+ "svelte/no-dupe-on-directives": "error",
364
+ "svelte/no-dupe-use-directives": "error",
365
+ "svelte/no-export-load-in-svelte-module-in-kit-pages": "error",
366
+ "svelte/no-goto-without-base": "error",
367
+ "svelte/no-ignored-unsubscribe": "error",
368
+ "svelte/no-immutable-reactive-statements": "error",
369
+ "svelte/no-reactive-functions": "error",
370
+ "svelte/no-reactive-literals": "error",
371
+ "svelte/no-spaces-around-equal-signs-in-attribute": "error",
372
+ "svelte/no-target-blank": "error",
373
+ "svelte/no-trailing-spaces": "error",
374
+ "svelte/no-useless-mustaches": "error",
375
+ "svelte/require-store-callbacks-use-set-param": "error",
376
+ "svelte/spaced-html-comment": ["error", "always"],
377
+ "svelte/valid-each-key": "error",
378
+ ...disableStylistic ? {
379
+ "@stylistic/indent": "off",
380
+ "@stylistic/indent-binary-ops": "off",
381
+ "@stylistic/no-trailing-spaces": "off"
382
+ } : {}
383
+ }
384
+ }];
397
385
  };
398
386
  var svelte_default = svelte;
399
387
 
400
- // src/configs/tailwindcss.ts
401
- var tailwindcss = async () => {
402
- const pluginTailwind = await import("eslint-plugin-tailwindcss").then((mod) => mod.default);
403
- return [
404
- ...pluginTailwind.configs["flat/recommended"].map((config) => ({
405
- ...config,
406
- name: config.name?.replaceAll(":", "/")
407
- })),
408
- {
409
- name: "lichthagel/tailwindcss",
410
- rules: {
411
- "tailwindcss/classnames-order": "error",
412
- "tailwindcss/enforces-negative-arbitrary-values": "error",
413
- "tailwindcss/enforces-shorthand": "error",
414
- "tailwindcss/no-contradicting-classname": "error",
415
- "tailwindcss/no-unnecessary-arbitrary-value": "error"
416
- }
417
- }
418
- ];
388
+ //#endregion
389
+ //#region src/configs/tailwindcss.ts
390
+ const tailwindcss = async () => {
391
+ return [...(await import("eslint-plugin-tailwindcss").then((mod) => mod.default)).configs["flat/recommended"].map((config) => {
392
+ var _config$name;
393
+ return {
394
+ ...config,
395
+ name: (_config$name = config.name) === null || _config$name === void 0 ? void 0 : _config$name.replaceAll(":", "/")
396
+ };
397
+ }), {
398
+ name: "lichthagel/tailwindcss",
399
+ rules: {
400
+ "tailwindcss/classnames-order": "error",
401
+ "tailwindcss/enforces-negative-arbitrary-values": "error",
402
+ "tailwindcss/enforces-shorthand": "error",
403
+ "tailwindcss/no-contradicting-classname": "error",
404
+ "tailwindcss/no-unnecessary-arbitrary-value": "error"
405
+ }
406
+ }];
419
407
  };
420
408
  var tailwindcss_default = tailwindcss;
421
409
 
422
- // src/configs/typescript.ts
423
- import ts from "typescript-eslint";
424
- var typescript_default = [
425
- ...ts.configs.recommendedTypeChecked,
426
- {
427
- name: "lichthagel/typescript",
428
- rules: {
429
- "@typescript-eslint/array-type": "error",
430
- "@typescript-eslint/consistent-indexed-object-style": ["warn", "index-signature"],
431
- "@typescript-eslint/consistent-type-assertions": ["warn", { assertionStyle: "as", objectLiteralTypeAssertions: "allow" }],
432
- "@typescript-eslint/consistent-type-definitions": ["warn", "type"],
433
- "@typescript-eslint/consistent-type-exports": "error",
434
- "@typescript-eslint/consistent-type-imports": ["error", { fixStyle: "inline-type-imports" }],
435
- "@typescript-eslint/default-param-last": "warn",
436
- "@typescript-eslint/explicit-member-accessibility": "error",
437
- "@typescript-eslint/method-signature-style": "warn",
438
- "@typescript-eslint/no-array-constructor": "error",
439
- "@typescript-eslint/no-useless-empty-export": "error",
440
- "default-param-last": "off"
441
- }
442
- }
443
- ];
410
+ //#endregion
411
+ //#region src/configs/typescript.ts
412
+ var typescript_default = [...ts.configs.recommendedTypeChecked, {
413
+ name: "lichthagel/typescript",
414
+ rules: {
415
+ "@typescript-eslint/array-type": "error",
416
+ "@typescript-eslint/consistent-indexed-object-style": ["warn", "index-signature"],
417
+ "@typescript-eslint/consistent-type-assertions": ["warn", {
418
+ assertionStyle: "as",
419
+ objectLiteralTypeAssertions: "allow"
420
+ }],
421
+ "@typescript-eslint/consistent-type-definitions": ["warn", "type"],
422
+ "@typescript-eslint/consistent-type-exports": "error",
423
+ "@typescript-eslint/consistent-type-imports": ["error", { fixStyle: "inline-type-imports" }],
424
+ "@typescript-eslint/default-param-last": "warn",
425
+ "@typescript-eslint/explicit-member-accessibility": "error",
426
+ "@typescript-eslint/method-signature-style": "warn",
427
+ "@typescript-eslint/no-array-constructor": "error",
428
+ "@typescript-eslint/no-useless-empty-export": "error",
429
+ "default-param-last": "off"
430
+ }
431
+ }];
444
432
 
445
- // src/configs/unicorn.ts
446
- import unicornPlugin from "eslint-plugin-unicorn";
447
- var unicorn_default = [
448
- {
449
- name: "unicorn/flat/recommended",
450
- ...unicornPlugin.configs["flat/recommended"]
451
- },
452
- {
453
- name: "lichthagel/unicorn",
454
- rules: {
455
- "unicorn/consistent-destructuring": "error",
456
- "unicorn/filename-case": [
457
- "error",
458
- {
459
- cases: {
460
- camelCase: true,
461
- kebabCase: true,
462
- pascalCase: true
463
- }
464
- }
465
- ],
466
- "unicorn/import-style": "off",
467
- "unicorn/no-null": "off",
468
- "unicorn/no-useless-undefined": ["error", { checkArguments: false }],
469
- "unicorn/prevent-abbreviations": "off"
470
- }
471
- }
472
- ];
433
+ //#endregion
434
+ //#region src/configs/unicorn.ts
435
+ var unicorn_default = [{
436
+ name: "unicorn/flat/recommended",
437
+ ...unicornPlugin.configs["flat/recommended"]
438
+ }, {
439
+ name: "lichthagel/unicorn",
440
+ rules: {
441
+ "unicorn/consistent-destructuring": "error",
442
+ "unicorn/filename-case": ["error", { cases: {
443
+ camelCase: true,
444
+ kebabCase: true,
445
+ pascalCase: true
446
+ } }],
447
+ "unicorn/import-style": "off",
448
+ "unicorn/no-null": "off",
449
+ "unicorn/no-useless-undefined": ["error", { checkArguments: false }],
450
+ "unicorn/prevent-abbreviations": "off"
451
+ }
452
+ }];
473
453
 
474
- // src/factory.ts
475
- var lichthagel = async (options = {}) => {
476
- const {
477
- browser = false,
478
- node: node2 = false,
479
- solid: solid2 = false,
480
- stylistic: stylistic2 = true,
481
- svelte: svelte2 = false,
482
- tailwindcss: tailwindcss2 = false,
483
- typescript = true,
484
- ...rest
485
- } = options;
486
- if (Object.keys(rest).length > 0) {
487
- throw new Error(`Unknown options: ${Object.keys(rest).join(", ")}`);
488
- }
489
- const config = [...javascript_default, ...unicorn_default, ...perfectionist_default];
490
- if (stylistic2) {
491
- config.push(...stylistic_default);
492
- }
493
- if (browser) {
494
- config.push(...browser_default);
495
- }
496
- if (node2) {
497
- config.push(...await node_default());
498
- }
499
- if (typescript) {
500
- config.push(...typescript_default);
501
- }
502
- if (solid2) {
503
- config.push(...await solid_default({ withTypescript: typescript }));
504
- }
505
- if (svelte2) {
506
- config.push(...await svelte_default({ disableStylistic: stylistic2, withTypescript: typescript }));
507
- }
508
- if (tailwindcss2) {
509
- config.push(...await tailwindcss_default());
510
- }
511
- return config;
454
+ //#endregion
455
+ //#region src/factory.ts
456
+ /**
457
+ * Constructs an array of ESLint flat config items based on the provided options.
458
+ *
459
+ * @param options The options for generating the ESLint configurations. See {@linkcode OptionsConfig}.
460
+ * @returns An array of ESLint flat config items.
461
+ */
462
+ const lichthagel = async (options = {}) => {
463
+ const { browser = false, node: node$1 = false, solid: solid$1 = false, stylistic: stylistic$1 = true, svelte: svelte$1 = false, tailwindcss: tailwindcss$1 = false, typescript = true,...rest } = options;
464
+ if (Object.keys(rest).length > 0) throw new Error(`Unknown options: ${Object.keys(rest).join(", ")}`);
465
+ const config = [
466
+ ...javascript_default,
467
+ ...unicorn_default,
468
+ ...perfectionist_default
469
+ ];
470
+ if (stylistic$1) config.push(...stylistic_default);
471
+ if (browser) config.push(...browser_default);
472
+ if (node$1) config.push(...await node_default());
473
+ if (typescript) config.push(...typescript_default);
474
+ if (solid$1) config.push(...await solid_default({ withTypescript: typescript }));
475
+ if (svelte$1) config.push(...await svelte_default({
476
+ disableStylistic: stylistic$1,
477
+ withTypescript: typescript
478
+ }));
479
+ if (tailwindcss$1) config.push(...await tailwindcss_default());
480
+ return config;
512
481
  };
513
482
  var factory_default = lichthagel;
514
- export {
515
- browser_default as browser,
516
- factory_default as default,
517
- javascript_default as javascript,
518
- node_default as node,
519
- perfectionist_default as perfectionist,
520
- solid_default as solid,
521
- stylistic_default as stylistic,
522
- svelte_default as svelte,
523
- tailwindcss_default as tailwindcss,
524
- typescript_default as typescript,
525
- unicorn_default as unicorn
526
- };
483
+
484
+ //#endregion
485
+ export { browser_default as browser, factory_default as default, javascript_default as javascript, node_default as node, perfectionist_default as perfectionist, solid_default as solid, stylistic_default as stylistic, svelte_default as svelte, tailwindcss_default as tailwindcss, typescript_default as typescript, unicorn_default as unicorn };