|
1 | | -import js from "@eslint/js"; |
2 | | -import ts from "typescript-eslint"; |
3 | | -import svelte from "eslint-plugin-svelte"; |
4 | | -import prettier from "eslint-config-prettier"; |
5 | | -import globals from "globals"; |
| 1 | +import {browser} from "@zerebos/eslint-config"; |
| 2 | +import ts from "@zerebos/eslint-config-typescript"; |
| 3 | +import {defineConfig} from "eslint/config"; |
| 4 | +import {build} from "@zerebos/eslint-config-svelte"; |
| 5 | +import svelteConfig from "./svelte.config.js"; |
6 | 6 |
|
7 | | -/** @type {import('eslint').Linter.Config[]} */ |
8 | | -export default [ |
9 | | - js.configs.recommended, |
10 | | - ...ts.configs.recommended, |
11 | | - ...svelte.configs["flat/recommended"], |
12 | | - prettier, |
13 | | - ...svelte.configs["flat/prettier"], |
| 7 | + |
| 8 | +export default defineConfig( |
| 9 | + defineConfig( |
| 10 | + ...browser, |
| 11 | + ...ts.configs.recommendedWithTypes |
| 12 | + ), |
| 13 | + ...build(svelteConfig), |
14 | 14 | { |
15 | 15 | languageOptions: { |
16 | 16 | globals: { |
17 | | - ...globals.browser, |
18 | | - ...globals.node |
19 | | - } |
20 | | - } |
21 | | - }, |
22 | | - { |
23 | | - files: ["**/*.svelte"], |
24 | | - languageOptions: { |
25 | | - parserOptions: { |
26 | | - parser: ts.parser |
| 17 | + __INSTALLER_LICENSE__: "readonly", |
27 | 18 | } |
28 | 19 | } |
29 | 20 | }, |
30 | 21 | { |
31 | | - ignores: ["build/", ".svelte-kit/", "dist/", "custom/", "config/", "sverdle/"] |
32 | | - }, |
33 | | - { |
34 | | - rules: { |
35 | | - "accessor-pairs": "error", |
36 | | - "block-spacing": ["error", "never"], |
37 | | - "brace-style": ["error", "stroustrup", {allowSingleLine: true}], |
38 | | - "curly": ["error", "multi-line", "consistent"], |
39 | | - "dot-location": ["error", "property"], |
40 | | - "dot-notation": "error", |
41 | | - "func-call-spacing": "error", |
42 | | - "handle-callback-err": "error", |
43 | | - "key-spacing": "error", |
44 | | - "keyword-spacing": "error", |
45 | | - "new-cap": ["error", {newIsCap: true}], |
46 | | - "no-array-constructor": "error", |
47 | | - "no-caller": "error", |
48 | | - "no-console": "error", |
49 | | - "no-duplicate-imports": "error", |
50 | | - "no-else-return": "error", |
51 | | - "no-eval": "error", |
52 | | - "no-floating-decimal": "error", |
53 | | - "no-implied-eval": "error", |
54 | | - "no-iterator": "error", |
55 | | - "no-label-var": "error", |
56 | | - "no-labels": "error", |
57 | | - "no-lone-blocks": "error", |
58 | | - "no-mixed-spaces-and-tabs": "error", |
59 | | - "no-multi-spaces": "error", |
60 | | - "no-multi-str": "error", |
61 | | - "no-new": "error", |
62 | | - "no-new-func": "error", |
63 | | - "no-new-object": "error", |
64 | | - "no-new-wrappers": "error", |
65 | | - "no-octal-escape": "error", |
66 | | - "no-path-concat": "error", |
67 | | - "no-proto": "error", |
68 | | - "no-prototype-builtins": "off", |
69 | | - "no-redeclare": ["error", {builtinGlobals: true}], |
70 | | - "no-self-compare": "error", |
71 | | - "no-sequences": "error", |
72 | | - "no-shadow": ["warn", {builtinGlobals: false, hoist: "functions"}], |
73 | | - "no-tabs": "error", |
74 | | - "no-template-curly-in-string": "error", |
75 | | - "no-throw-literal": "error", |
76 | | - "no-undef": "error", |
77 | | - "no-undef-init": "error", |
78 | | - "no-unmodified-loop-condition": "error", |
79 | | - "no-unneeded-ternary": "error", |
80 | | - "no-useless-call": "error", |
81 | | - "no-useless-computed-key": "error", |
82 | | - "no-useless-constructor": "error", |
83 | | - "no-useless-rename": "error", |
84 | | - "no-var": "error", |
85 | | - "no-whitespace-before-property": "error", |
86 | | - "object-curly-spacing": ["error", "never", {objectsInObjects: false}], |
87 | | - "object-property-newline": ["error", {allowAllPropertiesOnSameLine: true}], |
88 | | - "operator-linebreak": [ |
89 | | - "error", |
90 | | - "none", |
91 | | - {overrides: {"?": "before", ":": "before", "&&": "before"}} |
92 | | - ], |
93 | | - "prefer-const": "error", |
94 | | - "quote-props": ["error", "consistent-as-needed", {keywords: true}], |
95 | | - "quotes": ["error", "double", {allowTemplateLiterals: true}], |
96 | | - "rest-spread-spacing": "error", |
97 | | - "semi": "error", |
98 | | - "semi-spacing": "error", |
99 | | - "space-before-blocks": "error", |
100 | | - "space-in-parens": "error", |
101 | | - "space-infix-ops": "error", |
102 | | - "space-unary-ops": [ |
103 | | - "error", |
104 | | - {words: true, nonwords: false, overrides: {"typeof": false}} |
105 | | - ], |
106 | | - "spaced-comment": ["error", "always", {exceptions: ["-", "*"]}], |
107 | | - "template-curly-spacing": "error", |
108 | | - "wrap-iife": ["error", "inside"], |
109 | | - "yield-star-spacing": "error", |
110 | | - "yoda": "error" |
111 | | - }, |
112 | | - }, |
113 | | - { |
114 | | - rules: { |
115 | | - "@typescript-eslint/no-unused-vars": ["error", {argsIgnorePattern: "^_", varsIgnorePattern: "^_"}] |
116 | | - } |
| 22 | + ignores: ["build/", ".svelte-kit/", "dist/", "custom/", "config/", "sverdle/", "notes/"] |
117 | 23 | }, |
118 | | - { |
119 | | - rules: { |
120 | | - // Errors |
121 | | - "svelte/infinite-reactive-loop": "error", |
122 | | - "svelte/no-dom-manipulating": "off", |
123 | | - "svelte/no-dupe-else-if-blocks": "error", |
124 | | - "svelte/no-dupe-on-directives": "error", |
125 | | - "svelte/no-dupe-style-properties": "error", |
126 | | - "svelte/no-dupe-use-directives": "error", |
127 | | - "svelte/no-dynamic-slot-name": "error", |
128 | | - "svelte/no-export-load-in-svelte-module-in-kit-pages": "error", |
129 | | - "svelte/no-not-function-handler": "error", |
130 | | - "svelte/no-object-in-text-mustaches": "error", |
131 | | - "svelte/no-reactive-reassign": "error", |
132 | | - "svelte/no-shorthand-style-property-overrides": "error", |
133 | | - "svelte/no-store-async": "error", |
134 | | - "svelte/no-unknown-style-directive-property": "error", |
135 | | - "svelte/require-store-callbacks-use-set-param": "error", |
136 | | - "svelte/require-store-reactive-access": "error", |
137 | | - "svelte/valid-compile": "error", |
138 | | - "svelte/valid-prop-names-in-kit-pages": "error", |
139 | | - |
140 | | - // Security |
141 | | - "svelte/no-at-html-tags": "error", |
142 | | - "svelte/no-target-blank": "error", |
143 | | - |
144 | | - // Best Practices |
145 | | - "svelte/block-lang": ["error", {script: "ts"}], |
146 | | - "svelte/button-has-type": "error", |
147 | | - "svelte/no-at-debug-tags": "error", |
148 | | - "svelte/no-ignored-unsubscribe": "error", |
149 | | - "svelte/no-immutable-reactive-statements": "error", |
150 | | - "svelte/no-inline-styles": "off", |
151 | | - "svelte/no-reactive-functions": "error", |
152 | | - "svelte/no-reactive-literals": "error", |
153 | | - "svelte/no-svelte-internal": "error", |
154 | | - "svelte/no-unused-class-name": "error", |
155 | | - "svelte/no-unused-svelte-ignore": "error", |
156 | | - "svelte/no-useless-mustaches": "error", |
157 | | - "svelte/prefer-destructured-store-props": "error", |
158 | | - "svelte/require-each-key": "error", |
159 | | - "svelte/require-event-dispatcher-types": "error", |
160 | | - "svelte/require-optimized-style-attribute": "error", |
161 | | - "svelte/require-stores-init": "error", |
162 | | - "svelte/valid-each-key": "error", |
163 | | - |
164 | | - // Stylistic Issues |
165 | | - "svelte/derived-has-same-inputs-outputs": "error", |
166 | | - "svelte/first-attribute-linebreak": ["error", {multiline: "below", singleline: "beside"}], |
167 | | - "svelte/html-closing-bracket-spacing": "error", |
168 | | - "svelte/html-quotes": ["error", {prefer: "double"}], |
169 | | - "svelte/html-self-closing": ["error", {"void": "always", "component": "always", "svelte": "always", "normal": "ignore"}], |
170 | | - "svelte/indent": "off", |
171 | | - "svelte/max-attributes-per-line": "off", |
172 | | - "svelte/mustache-spacing": "error", |
173 | | - "svelte/no-extra-reactive-curlies": "error", |
174 | | - // "svelte/no-restricted-html-elements": "error", |
175 | | - "svelte/no-spaces-around-equal-signs-in-attribute": "error", |
176 | | - "svelte/prefer-class-directive": ["error", {prefer: "always"}], |
177 | | - "svelte/prefer-style-directive": "error", |
178 | | - "svelte/shorthand-attribute": "error", |
179 | | - "svelte/shorthand-directive": "error", |
180 | | - "svelte/sort-attributes": "off", |
181 | | - "svelte/spaced-html-comment": "error", |
182 | | - |
183 | | - // Extension Rules |
184 | | - "svelte/no-inner-declarations": "error", |
185 | | - "svelte/no-trailing-spaces": "error", |
186 | | - |
187 | | - // SvelteKit |
188 | | - "svelte/no-goto-without-base": "error", |
189 | | - |
190 | | - // System |
191 | | - "svelte/comment-directive": ["error", {reportUnusedDisableDirectives: true}], |
192 | | - "svelte/system": "error", |
193 | | - }, |
194 | | - languageOptions: { |
195 | | - globals: { |
196 | | - $state: false |
197 | | - } |
198 | | - } |
199 | | - } |
200 | | -]; |
| 24 | +); |
0 commit comments