@ethang/eslint-config 24.0.1 → 24.0.2
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/build.ts +48 -0
- package/dist/config.html.js +2 -0
- package/dist/config.html.js.map +1 -0
- package/dist/eslint.config.d.ts +4 -0
- package/dist/eslint.config.js +2 -0
- package/dist/package.json +67 -0
- package/eslint.config.js +28 -2
- package/package.json +1 -1
- package/src/README.md +132 -0
- package/src/build/create-config-file.ts +70 -0
- package/src/build/create-config.ts +98 -0
- package/src/build/get-react-version.ts +19 -0
- package/src/build/list-utilities.ts +137 -0
- package/src/build/rule-list.ts +283 -0
- package/src/build/update-readme.ts +259 -0
- package/src/build/update-rules.ts +173 -0
- package/src/config.angular.js +122 -0
- package/src/config.astro.js +69 -0
- package/src/config.html.js +73 -0
- package/src/config.react.js +111 -0
- package/src/config.solid.js +34 -0
- package/src/config.storybook.js +31 -0
- package/src/config.tailwind.js +28 -0
- package/src/constants.js +16 -0
- package/src/eslint.config.js +1075 -0
- package/src/eslint.html.js +73 -0
- package/src/setup/a11y.ts +19 -0
- package/src/setup/angular.ts +36 -0
- package/src/setup/astro.ts +14 -0
- package/src/setup/compat.ts +13 -0
- package/src/setup/cspell.ts +100 -0
- package/src/setup/css.ts +15 -0
- package/src/setup/eslint.ts +250 -0
- package/src/setup/gen-rules.ts +85 -0
- package/src/setup/html.ts +17 -0
- package/src/setup/json.ts +17 -0
- package/src/setup/lodash.ts +59 -0
- package/src/setup/markdown.ts +16 -0
- package/src/setup/perfectionist.ts +49 -0
- package/src/setup/react.ts +37 -0
- package/src/setup/solid.ts +21 -0
- package/src/setup/sonar.ts +40 -0
- package/src/setup/storybook.ts +10 -0
- package/src/setup/tailwind.ts +12 -0
- package/src/setup/tanstack-query.ts +8 -0
- package/src/setup/tanstack-router.ts +8 -0
- package/src/setup/typescript-eslint.ts +114 -0
- package/src/setup/unicorn.ts +38 -0
- package/src/tsconfig.json +3 -0
- package/tsconfig.json +3 -0
- /package/{README.md → dist/README.md} +0 -0
- /package/{chunk-WK3YS7OG.js → dist/chunk-WK3YS7OG.js} +0 -0
- /package/{chunk-WK3YS7OG.js.map → dist/chunk-WK3YS7OG.js.map} +0 -0
- /package/{config.angular.d.ts → dist/config.angular.d.ts} +0 -0
- /package/{config.angular.js → dist/config.angular.js} +0 -0
- /package/{config.angular.js.map → dist/config.angular.js.map} +0 -0
- /package/{config.astro.d.ts → dist/config.astro.d.ts} +0 -0
- /package/{config.astro.js → dist/config.astro.js} +0 -0
- /package/{config.astro.js.map → dist/config.astro.js.map} +0 -0
- /package/{config.react.d.ts → dist/config.html.d.ts} +0 -0
- /package/{config.solid.d.ts → dist/config.react.d.ts} +0 -0
- /package/{config.react.js → dist/config.react.js} +0 -0
- /package/{config.react.js.map → dist/config.react.js.map} +0 -0
- /package/{config.storybook.d.ts → dist/config.solid.d.ts} +0 -0
- /package/{config.solid.js → dist/config.solid.js} +0 -0
- /package/{config.solid.js.map → dist/config.solid.js.map} +0 -0
- /package/{eslint.config.d.ts → dist/config.storybook.d.ts} +0 -0
- /package/{config.storybook.js → dist/config.storybook.js} +0 -0
- /package/{config.storybook.js.map → dist/config.storybook.js.map} +0 -0
- /package/{config.tailwind.d.ts → dist/config.tailwind.d.ts} +0 -0
- /package/{config.tailwind.js → dist/config.tailwind.js} +0 -0
- /package/{config.tailwind.js.map → dist/config.tailwind.js.map} +0 -0
- /package/{constants.js → dist/constants.js} +0 -0
- /package/{constants.js.map → dist/constants.js.map} +0 -0
- /package/{eslint.config.js.map → dist/eslint.config.js.map} +0 -0
package/build.ts
ADDED
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
import replace from "lodash/replace.js";
|
|
2
|
+
import { copyFileSync, writeFileSync } from "node:fs";
|
|
3
|
+
|
|
4
|
+
import { projectBuilder } from "../project-builder/src/project-builder.ts";
|
|
5
|
+
import { updateReadme } from "./src/build/update-readme.js";
|
|
6
|
+
import { updateRules } from "./src/build/update-rules.js";
|
|
7
|
+
|
|
8
|
+
const configFiles = [
|
|
9
|
+
"src/eslint.config.js",
|
|
10
|
+
"src/config.html.js",
|
|
11
|
+
"src/config.astro.js",
|
|
12
|
+
"src/config.react.js",
|
|
13
|
+
"src/config.solid.js",
|
|
14
|
+
"src/config.angular.js",
|
|
15
|
+
"src/config.storybook.js",
|
|
16
|
+
"src/config.tailwind.js",
|
|
17
|
+
];
|
|
18
|
+
|
|
19
|
+
await updateRules();
|
|
20
|
+
updateReadme();
|
|
21
|
+
await projectBuilder(import.meta.dirname, {
|
|
22
|
+
entry: [...configFiles, "src/constants.js"],
|
|
23
|
+
outDir: "dist",
|
|
24
|
+
});
|
|
25
|
+
copyFileSync("src/README.md", "dist/README.md");
|
|
26
|
+
|
|
27
|
+
const typeFile = `import { defineConfig } from "eslint/config";
|
|
28
|
+
|
|
29
|
+
declare const _default: Parameters<typeof defineConfig>;
|
|
30
|
+
export default _default;
|
|
31
|
+
`;
|
|
32
|
+
|
|
33
|
+
const tailwindTypeFile = `import { defineConfig } from "eslint/config";
|
|
34
|
+
|
|
35
|
+
declare const _default: (pathToIndex: string) => Parameters<typeof defineConfig>;
|
|
36
|
+
export default _default;
|
|
37
|
+
`;
|
|
38
|
+
|
|
39
|
+
for (const configFile of configFiles) {
|
|
40
|
+
let distributionFile = replace(configFile, "src", "dist");
|
|
41
|
+
distributionFile = replace(distributionFile, ".js", ".d.ts");
|
|
42
|
+
|
|
43
|
+
if ("src/config.tailwind.js" === configFile) {
|
|
44
|
+
writeFileSync(distributionFile, tailwindTypeFile);
|
|
45
|
+
} else {
|
|
46
|
+
writeFileSync(distributionFile, typeFile);
|
|
47
|
+
}
|
|
48
|
+
}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
import{a as r,b as e}from"./chunk-WK3YS7OG.js";import{defineConfig as t}from"eslint/config";import o from"@html-eslint/eslint-plugin";var m=t({files:["**/*.html"],ignores:r,languageOptions:e,language:"html/html",plugins:{html:o},rules:{"html/attrs-newline":"off","html/element-newline":"off","html/id-naming-convention":"error","html/indent":"off","html/lowercase":"error","html/max-element-depth":"error","html/no-abstract-roles":"error","html/no-accesskey-attrs":"error","html/no-aria-hidden-body":"error","html/no-aria-hidden-on-focusable":"error","html/no-duplicate-attrs":"error","html/no-duplicate-class":"error","html/no-duplicate-id":"error","html/no-duplicate-in-head":"error","html/no-empty-headings":"error","html/no-extra-spacing-attrs":"off","html/no-extra-spacing-text":"error","html/no-heading-inside-button":"error","html/no-ineffective-attrs":"error","html/no-inline-styles":"error","html/no-invalid-entity":"error","html/no-invalid-role":"error","html/no-multiple-empty-lines":"error","html/no-multiple-h1":"error","html/no-nested-interactive":"error","html/no-non-scalable-viewport":"error","html/no-obsolete-tags":"error","html/no-positive-tabindex":"error","html/no-restricted-attr-values":"error","html/no-restricted-attrs":"error","html/no-restricted-tags":"error","html/no-script-style-type":"error","html/no-skip-heading-levels":"error","html/no-target-blank":"error","html/no-trailing-spaces":"error","html/no-whitespace-only-children":"error","html/prefer-https":"error","html/quotes":"error","html/require-attrs":"error","html/require-button-type":"error","html/require-closing-tags":"off","html/require-doctype":"error","html/require-explicit-size":"error","html/require-form-method":"error","html/require-frame-title":"error","html/require-img-alt":"error","html/require-input-label":"error","html/require-lang":"error","html/require-li-container":"error","html/require-meta-charset":"error","html/require-meta-description":"error","html/require-meta-viewport":"error","html/require-open-graph-protocol":"error","html/require-title":"error","html/sort-attrs":"error","html/use-baseline":"error"}});export{m as default};
|
|
2
|
+
//# sourceMappingURL=config.html.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/config.html.js"],"sourcesContent":["// @ts-nocheck\nimport { defineConfig } from \"eslint/config\";\nimport { ignores, languageOptions } from \"./constants.js\";\nimport html from \"@html-eslint/eslint-plugin\";\n\nexport default defineConfig(\n {\n files: [\"**/*.html\"],\nignores,\nlanguageOptions,language: \"html/html\",\n plugins: {\n \"html\": html,\n },\n rules: {\n \"html/attrs-newline\":\"off\",\"html/element-newline\":\"off\",\"html/id-naming-convention\":\"error\",\"html/indent\":\"off\",\"html/lowercase\":\"error\",\"html/max-element-depth\":\"error\",\"html/no-abstract-roles\":\"error\",\"html/no-accesskey-attrs\":\"error\",\"html/no-aria-hidden-body\":\"error\",\"html/no-aria-hidden-on-focusable\":\"error\",\"html/no-duplicate-attrs\":\"error\",\"html/no-duplicate-class\":\"error\",\"html/no-duplicate-id\":\"error\",\"html/no-duplicate-in-head\":\"error\",\"html/no-empty-headings\":\"error\",\"html/no-extra-spacing-attrs\":\"off\",\"html/no-extra-spacing-text\":\"error\",\"html/no-heading-inside-button\":\"error\",\"html/no-ineffective-attrs\":\"error\",\"html/no-inline-styles\":\"error\",\"html/no-invalid-entity\":\"error\",\"html/no-invalid-role\":\"error\",\"html/no-multiple-empty-lines\":\"error\",\"html/no-multiple-h1\":\"error\",\"html/no-nested-interactive\":\"error\",\"html/no-non-scalable-viewport\":\"error\",\"html/no-obsolete-tags\":\"error\",\"html/no-positive-tabindex\":\"error\",\"html/no-restricted-attr-values\":\"error\",\"html/no-restricted-attrs\":\"error\",\"html/no-restricted-tags\":\"error\",\"html/no-script-style-type\":\"error\",\"html/no-skip-heading-levels\":\"error\",\"html/no-target-blank\":\"error\",\"html/no-trailing-spaces\":\"error\",\"html/no-whitespace-only-children\":\"error\",\"html/prefer-https\":\"error\",\"html/quotes\":\"error\",\"html/require-attrs\":\"error\",\"html/require-button-type\":\"error\",\"html/require-closing-tags\":\"off\",\"html/require-doctype\":\"error\",\"html/require-explicit-size\":\"error\",\"html/require-form-method\":\"error\",\"html/require-frame-title\":\"error\",\"html/require-img-alt\":\"error\",\"html/require-input-label\":\"error\",\"html/require-lang\":\"error\",\"html/require-li-container\":\"error\",\"html/require-meta-charset\":\"error\",\"html/require-meta-description\":\"error\",\"html/require-meta-viewport\":\"error\",\"html/require-open-graph-protocol\":\"error\",\"html/require-title\":\"error\",\"html/sort-attrs\":\"error\",\"html/use-baseline\":\"error\"\n },\n \n },\n \n \n );\n"],"mappings":"+CACA,OAAS,gBAAAA,MAAoB,gBAE7B,OAAOC,MAAU,6BAEjB,IAAOC,EAAQC,EACT,CACF,MAAO,CAAC,WAAW,EACvB,QAAAC,EACA,gBAAAC,EAAgB,SAAU,YACtB,QAAS,CACP,KAAQJ,CACV,EACA,MAAO,CACL,qBAAqB,MAAM,uBAAuB,MAAM,4BAA4B,QAAQ,cAAc,MAAM,iBAAiB,QAAQ,yBAAyB,QAAQ,yBAAyB,QAAQ,0BAA0B,QAAQ,2BAA2B,QAAQ,mCAAmC,QAAQ,0BAA0B,QAAQ,0BAA0B,QAAQ,uBAAuB,QAAQ,4BAA4B,QAAQ,yBAAyB,QAAQ,8BAA8B,MAAM,6BAA6B,QAAQ,gCAAgC,QAAQ,4BAA4B,QAAQ,wBAAwB,QAAQ,yBAAyB,QAAQ,uBAAuB,QAAQ,+BAA+B,QAAQ,sBAAsB,QAAQ,6BAA6B,QAAQ,gCAAgC,QAAQ,wBAAwB,QAAQ,4BAA4B,QAAQ,iCAAiC,QAAQ,2BAA2B,QAAQ,0BAA0B,QAAQ,4BAA4B,QAAQ,8BAA8B,QAAQ,uBAAuB,QAAQ,0BAA0B,QAAQ,mCAAmC,QAAQ,oBAAoB,QAAQ,cAAc,QAAQ,qBAAqB,QAAQ,2BAA2B,QAAQ,4BAA4B,MAAM,uBAAuB,QAAQ,6BAA6B,QAAQ,2BAA2B,QAAQ,2BAA2B,QAAQ,uBAAuB,QAAQ,2BAA2B,QAAQ,oBAAoB,QAAQ,4BAA4B,QAAQ,4BAA4B,QAAQ,gCAAgC,QAAQ,6BAA6B,QAAQ,mCAAmC,QAAQ,qBAAqB,QAAQ,kBAAkB,QAAQ,oBAAoB,OAC31D,CAEF,CAGE","names":["defineConfig","html","config_html_default","defineConfig","ignores","languageOptions"]}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
import{a as e,b as o}from"./chunk-WK3YS7OG.js";import{defineConfig as n}from"eslint/config";import s from"eslint-plugin-jsx-a11y";import t from"eslint-plugin-compat";import a from"@cspell/eslint-plugin";import i from"@eslint/css";import c from"eslint-config-prettier";import p from"eslint-plugin-prettier/recommended";import r from"@eslint/json";import l from"eslint-plugin-lodash";import u from"@eslint/markdown";import d from"eslint-plugin-perfectionist";import f from"eslint-plugin-sonarjs";import m from"@tanstack/eslint-plugin-query";import y from"@tanstack/eslint-plugin-router";import g from"typescript-eslint";import h from"eslint-plugin-unicorn";var _=n({files:["**/*.{js,ts,jsx,tsx,cjs,cts,mjs,mts}"],ignores:e,languageOptions:o,settings:{react:{version:"19.2.3"}},plugins:{compat:t,"@typescript-eslint":g.plugin,unicorn:h,lodash:l,sonar:f,perfectionist:d,"@tanstack/query":m,"@tanstack/router":y,a11y:s,cspell:a},rules:{"compat/compat":"error","accessor-pairs":"error","array-callback-return":"error","arrow-body-style":["error","always"],"block-scoped-var":"error",camelcase:"off","capitalized-comments":"off","class-methods-use-this":"off",complexity:"off","consistent-return":"off","consistent-this":"off","constructor-super":"error",curly:"off","default-case":"off","default-case-last":"off","default-param-last":"off","dot-notation":"off",eqeqeq:"error","for-direction":"error","func-name-matching":"error","func-names":"off","func-style":["error","declaration",{allowArrowFunctions:!0}],"getter-return":"error","grouped-accessor-pairs":"error","guard-for-in":"error","id-denylist":"off","id-length":"off","id-match":"off","init-declarations":"off","logical-assignment-operators":"error","max-classes-per-file":"error","max-depth":"error","max-lines":"off","max-lines-per-function":"off","max-nested-callbacks":"error","max-params":"off","max-statements":"off","new-cap":"off","no-alert":"error","no-array-constructor":"off","no-async-promise-executor":"error","no-await-in-loop":"error","no-bitwise":"error","no-caller":"error","no-case-declarations":"error","no-class-assign":"error","no-compare-neg-zero":"error","no-cond-assign":"error","no-console":"error","no-const-assign":"error","no-constant-binary-expression":"error","no-constant-condition":"error","no-constructor-return":"error","no-continue":"error","no-control-regex":"error","no-debugger":"error","no-delete-var":"error","no-div-regex":"error","no-dupe-args":"error","no-dupe-class-members":"off","no-dupe-else-if":"error","no-dupe-keys":"error","no-duplicate-case":"error","no-duplicate-imports":"error","no-else-return":"error","no-empty":"error","no-empty-character-class":"error","no-empty-function":"off","no-empty-pattern":"error","no-empty-static-block":"error","no-eq-null":"error","no-eval":"error","no-ex-assign":"error","no-extend-native":"error","no-extra-bind":"error","no-extra-boolean-cast":"error","no-extra-label":"error","no-fallthrough":"error","no-func-assign":"error","no-global-assign":"error","no-implicit-coercion":"error","no-implicit-globals":"off","no-implied-eval":"off","no-import-assign":"error","no-inline-comments":"off","no-inner-declarations":"error","no-invalid-regexp":"error","no-invalid-this":"error","no-irregular-whitespace":"error","no-iterator":"error","no-label-var":"error","no-labels":"error","no-lone-blocks":"error","no-lonely-if":"error","no-loop-func":"error","no-loss-of-precision":"error","no-magic-numbers":"off","no-misleading-character-class":"error","no-multi-assign":"error","no-multi-str":"error","no-negated-condition":"error","no-nested-ternary":"error","no-new":"error","no-new-func":"error","no-new-native-nonconstructor":"error","no-new-wrappers":"error","no-nonoctal-decimal-escape":"error","no-obj-calls":"error","no-object-constructor":"error","no-octal":"error","no-octal-escape":"error","no-param-reassign":"error","no-plusplus":"error","no-promise-executor-return":"error","no-proto":"error","no-prototype-builtins":"error","no-redeclare":"off","no-regex-spaces":"error","no-restricted-exports":"off","no-restricted-globals":"off","no-restricted-imports":"off","no-restricted-properties":"off","no-restricted-syntax":"off","no-return-assign":"error","no-script-url":"error","no-self-assign":"error","no-self-compare":"error","no-sequences":"error","no-setter-return":"error","no-shadow":"off","no-shadow-restricted-names":"error","no-sparse-arrays":"error","no-template-curly-in-string":"off","no-ternary":"off","no-this-before-super":"error","no-throw-literal":"off","no-unassigned-vars":"error","no-undef":"off","no-undef-init":"error","no-undefined":"off","no-underscore-dangle":"off","no-unexpected-multiline":"off","no-unmodified-loop-condition":"error","no-unneeded-ternary":"error","no-unreachable":"error","no-unreachable-loop":"error","no-unsafe-finally":"error","no-unsafe-negation":"error","no-unsafe-optional-chaining":["error",{disallowArithmeticOperators:!0}],"no-unused-expressions":"off","no-unused-labels":"error","no-unused-private-class-members":"error","no-unused-vars":"off","no-use-before-define":"off","no-useless-assignment":"off","no-useless-backreference":"error","no-useless-call":"error","no-useless-catch":"error","no-useless-computed-key":"error","no-useless-concat":"error","no-useless-constructor":"off","no-useless-escape":"error","no-useless-rename":"error","no-useless-return":"error","no-var":"error","no-void":"error","no-warning-comments":"off","no-with":"error","object-shorthand":"error","one-var":"off","operator-assignment":"error","prefer-arrow-callback":"off","prefer-const":"error","prefer-destructuring":"off","prefer-exponentiation-operator":"error","prefer-named-capture-group":"error","prefer-numeric-literals":"error","prefer-object-has-own":"error","prefer-object-spread":"error","prefer-promise-reject-errors":"off","prefer-regex-literals":"error","prefer-rest-params":"error","prefer-spread":"error","prefer-template":"error","preserve-caught-error":"error",radix:"error","require-atomic-updates":"error","require-await":"off","require-unicode-regexp":"error","require-yield":"error","sort-imports":"off","sort-keys":"off","sort-vars":"error",strict:"error","symbol-description":"error","unicode-bom":"error","use-isnan":"error","valid-typeof":"error","vars-on-top":"error",yoda:["error","always"],"@typescript-eslint/adjacent-overload-signatures":"off","@typescript-eslint/array-type":"error","@typescript-eslint/await-thenable":"error","@typescript-eslint/ban-ts-comment":"error","@typescript-eslint/ban-tslint-comment":"error","@typescript-eslint/class-literal-property-style":"error","@typescript-eslint/class-methods-use-this":"off","@typescript-eslint/consistent-generic-constructors":"error","@typescript-eslint/consistent-indexed-object-style":"error","@typescript-eslint/consistent-return":"off","@typescript-eslint/consistent-type-assertions":"error","@typescript-eslint/consistent-type-definitions":["error","type"],"@typescript-eslint/consistent-type-exports":"error","@typescript-eslint/consistent-type-imports":["error",{fixStyle:"inline-type-imports"}],"@typescript-eslint/default-param-last":"error","@typescript-eslint/dot-notation":"error","@typescript-eslint/explicit-function-return-type":"off","@typescript-eslint/explicit-member-accessibility":"error","@typescript-eslint/explicit-module-boundary-types":"off","@typescript-eslint/init-declarations":"off","@typescript-eslint/max-params":"off","@typescript-eslint/member-ordering":"off","@typescript-eslint/method-signature-style":"error","@typescript-eslint/naming-convention":"off","@typescript-eslint/no-array-constructor":"error","@typescript-eslint/no-array-delete":"error","@typescript-eslint/no-base-to-string":"error","@typescript-eslint/no-confusing-non-null-assertion":"error","@typescript-eslint/no-confusing-void-expression":"error","@typescript-eslint/no-deprecated":"error","@typescript-eslint/no-dupe-class-members":"off","@typescript-eslint/no-duplicate-enum-values":"error","@typescript-eslint/no-duplicate-type-constituents":"error","@typescript-eslint/no-dynamic-delete":"error","@typescript-eslint/no-empty-function":"error","@typescript-eslint/no-empty-object-type":"error","@typescript-eslint/no-explicit-any":"error","@typescript-eslint/no-extra-non-null-assertion":"error","@typescript-eslint/no-extraneous-class":"error","@typescript-eslint/no-floating-promises":"error","@typescript-eslint/no-for-in-array":"error","@typescript-eslint/no-implied-eval":"error","@typescript-eslint/no-import-type-side-effects":"error","@typescript-eslint/no-inferrable-types":"error","@typescript-eslint/no-invalid-this":"off","@typescript-eslint/no-invalid-void-type":"error","@typescript-eslint/no-loop-func":"error","@typescript-eslint/no-magic-numbers":"off","@typescript-eslint/no-meaningless-void-operator":"error","@typescript-eslint/no-misused-new":"error","@typescript-eslint/no-misused-promises":"error","@typescript-eslint/no-misused-spread":"error","@typescript-eslint/no-mixed-enums":"error","@typescript-eslint/no-namespace":"error","@typescript-eslint/no-non-null-asserted-nullish-coalescing":"error","@typescript-eslint/no-non-null-asserted-optional-chain":"error","@typescript-eslint/no-non-null-assertion":"error","@typescript-eslint/no-redeclare":"off","@typescript-eslint/no-redundant-type-constituents":"error","@typescript-eslint/no-require-imports":"error","@typescript-eslint/no-restricted-imports":"error","@typescript-eslint/no-restricted-types":"error","@typescript-eslint/no-shadow":"error","@typescript-eslint/no-this-alias":"error","@typescript-eslint/no-unnecessary-boolean-literal-compare":"error","@typescript-eslint/no-unnecessary-condition":"error","@typescript-eslint/no-unnecessary-parameter-property-assignment":"error","@typescript-eslint/no-unnecessary-qualifier":"error","@typescript-eslint/no-unnecessary-template-expression":"error","@typescript-eslint/no-unnecessary-type-arguments":"error","@typescript-eslint/no-unnecessary-type-assertion":"error","@typescript-eslint/no-unnecessary-type-constraint":"error","@typescript-eslint/no-unnecessary-type-conversion":"error","@typescript-eslint/no-unnecessary-type-parameters":"off","@typescript-eslint/no-unsafe-argument":"error","@typescript-eslint/no-unsafe-assignment":"error","@typescript-eslint/no-unsafe-call":"error","@typescript-eslint/no-unsafe-declaration-merging":"error","@typescript-eslint/no-unsafe-enum-comparison":"error","@typescript-eslint/no-unsafe-function-type":"error","@typescript-eslint/no-unsafe-member-access":"error","@typescript-eslint/no-unsafe-return":"error","@typescript-eslint/no-unsafe-type-assertion":"error","@typescript-eslint/no-unsafe-unary-minus":"error","@typescript-eslint/no-unused-expressions":"error","@typescript-eslint/no-unused-private-class-members":"error","@typescript-eslint/no-unused-vars":["error",{args:"all",argsIgnorePattern:"^_",caughtErrors:"all",caughtErrorsIgnorePattern:"^_",destructuredArrayIgnorePattern:"^_",ignoreRestSiblings:!0,varsIgnorePattern:"^_"}],"@typescript-eslint/no-use-before-define":"off","@typescript-eslint/no-useless-constructor":"error","@typescript-eslint/no-useless-empty-export":"error","@typescript-eslint/no-wrapper-object-types":"error","@typescript-eslint/non-nullable-type-assertion-style":"error","@typescript-eslint/only-throw-error":"error","@typescript-eslint/parameter-properties":"off","@typescript-eslint/prefer-as-const":"error","@typescript-eslint/prefer-destructuring":"error","@typescript-eslint/prefer-enum-initializers":"error","@typescript-eslint/prefer-find":"error","@typescript-eslint/prefer-for-of":"error","@typescript-eslint/prefer-function-type":"error","@typescript-eslint/prefer-includes":"error","@typescript-eslint/prefer-literal-enum-member":"error","@typescript-eslint/prefer-namespace-keyword":"error","@typescript-eslint/prefer-nullish-coalescing":"error","@typescript-eslint/prefer-optional-chain":"error","@typescript-eslint/prefer-promise-reject-errors":"error","@typescript-eslint/prefer-readonly":"error","@typescript-eslint/prefer-readonly-parameter-types":"off","@typescript-eslint/prefer-reduce-type-parameter":"error","@typescript-eslint/prefer-regexp-exec":"error","@typescript-eslint/prefer-return-this-type":"error","@typescript-eslint/prefer-string-starts-ends-with":"error","@typescript-eslint/promise-function-async":"error","@typescript-eslint/related-getter-setter-pairs":"error","@typescript-eslint/require-array-sort-compare":"error","@typescript-eslint/require-await":"error","@typescript-eslint/restrict-plus-operands":"error","@typescript-eslint/restrict-template-expressions":"error","@typescript-eslint/return-await":"error","@typescript-eslint/strict-boolean-expressions":"error","@typescript-eslint/switch-exhaustiveness-check":"error","@typescript-eslint/triple-slash-reference":"error","@typescript-eslint/unbound-method":"error","@typescript-eslint/unified-signatures":"error","@typescript-eslint/use-unknown-in-catch-callback-variable":"error","unicorn/better-regex":"error","unicorn/catch-error-name":"error","unicorn/consistent-assert":"error","unicorn/consistent-date-clone":"error","unicorn/consistent-destructuring":"error","unicorn/consistent-empty-array-spread":"error","unicorn/consistent-existence-index-check":"error","unicorn/consistent-function-scoping":"error","unicorn/custom-error-definition":"error","unicorn/empty-brace-spaces":"off","unicorn/error-message":"error","unicorn/escape-case":"error","unicorn/expiring-todo-comments":"error","unicorn/explicit-length-check":"off","unicorn/filename-case":"error","unicorn/import-style":"error","unicorn/new-for-builtins":"error","unicorn/no-abusive-eslint-disable":"error","unicorn/no-accessor-recursion":"error","unicorn/no-anonymous-default-export":"error","unicorn/no-array-callback-reference":"error","unicorn/no-array-for-each":"error","unicorn/no-array-method-this-argument":"error","unicorn/no-array-reduce":"error","unicorn/no-array-reverse":"error","unicorn/no-array-sort":"error","unicorn/no-await-expression-member":"error","unicorn/no-await-in-promise-methods":"error","unicorn/no-console-spaces":"error","unicorn/no-document-cookie":"error","unicorn/no-empty-file":"error","unicorn/no-for-loop":"error","unicorn/no-hex-escape":"error","unicorn/no-immediate-mutation":"error","unicorn/no-instanceof-builtins":"error","unicorn/no-invalid-fetch-options":"error","unicorn/no-invalid-remove-event-listener":"error","unicorn/no-keyword-prefix":"off","unicorn/no-lonely-if":"error","unicorn/no-magic-array-flat-depth":"error","unicorn/no-named-default":"error","unicorn/no-negated-condition":"error","unicorn/no-negation-in-equality-check":"error","unicorn/no-nested-ternary":"off","unicorn/no-new-array":"error","unicorn/no-new-buffer":"error","unicorn/no-null":"off","unicorn/no-object-as-default-parameter":"error","unicorn/no-process-exit":"error","unicorn/no-single-promise-in-promise-methods":"error","unicorn/no-static-only-class":"error","unicorn/no-thenable":"error","unicorn/no-this-assignment":"error","unicorn/no-typeof-undefined":"error","unicorn/no-unnecessary-array-flat-depth":"error","unicorn/no-unnecessary-array-splice-count":"error","unicorn/no-unnecessary-await":"error","unicorn/no-unnecessary-polyfills":"error","unicorn/no-unnecessary-slice-end":"error","unicorn/no-unreadable-array-destructuring":"error","unicorn/no-unreadable-iife":"error","unicorn/no-unused-properties":"error","unicorn/no-useless-collection-argument":"error","unicorn/no-useless-error-capture-stack-trace":"error","unicorn/no-useless-fallback-in-spread":"error","unicorn/no-useless-length-check":"error","unicorn/no-useless-promise-resolve-reject":"error","unicorn/no-useless-spread":"error","unicorn/no-useless-switch-case":"error","unicorn/no-useless-undefined":"error","unicorn/no-zero-fractions":"error","unicorn/number-literal-case":"off","unicorn/numeric-separators-style":"error","unicorn/prefer-add-event-listener":"error","unicorn/prefer-array-find":"error","unicorn/prefer-array-flat":"error","unicorn/prefer-array-flat-map":"error","unicorn/prefer-array-index-of":"error","unicorn/prefer-array-some":"error","unicorn/prefer-at":"error","unicorn/prefer-bigint-literals":"error","unicorn/prefer-blob-reading-methods":"error","unicorn/prefer-class-fields":"error","unicorn/prefer-classlist-toggle":"error","unicorn/prefer-code-point":"error","unicorn/prefer-date-now":"error","unicorn/prefer-default-parameters":"error","unicorn/prefer-dom-node-append":"error","unicorn/prefer-dom-node-dataset":"error","unicorn/prefer-dom-node-remove":"error","unicorn/prefer-dom-node-text-content":"error","unicorn/prefer-event-target":"error","unicorn/prefer-export-from":"error","unicorn/prefer-global-this":"error","unicorn/prefer-import-meta-properties":"error","unicorn/prefer-includes":"error","unicorn/prefer-json-parse-buffer":"error","unicorn/prefer-keyboard-event-key":"error","unicorn/prefer-logical-operator-over-ternary":"error","unicorn/prefer-math-min-max":"error","unicorn/prefer-math-trunc":"error","unicorn/prefer-modern-dom-apis":"error","unicorn/prefer-modern-math-apis":"error","unicorn/prefer-module":"error","unicorn/prefer-native-coercion-functions":"error","unicorn/prefer-negative-index":"error","unicorn/prefer-node-protocol":"error","unicorn/prefer-number-properties":"error","unicorn/prefer-object-from-entries":"error","unicorn/prefer-optional-catch-binding":"error","unicorn/prefer-prototype-methods":"error","unicorn/prefer-query-selector":"error","unicorn/prefer-reflect-apply":"error","unicorn/prefer-regexp-test":"error","unicorn/prefer-response-static-json":"error","unicorn/prefer-set-has":"error","unicorn/prefer-set-size":"error","unicorn/prefer-single-call":"error","unicorn/prefer-spread":"error","unicorn/prefer-string-raw":"error","unicorn/prefer-string-replace-all":"error","unicorn/prefer-string-slice":"error","unicorn/prefer-string-starts-ends-with":"error","unicorn/prefer-string-trim-start-end":"error","unicorn/prefer-structured-clone":"error","unicorn/prefer-switch":"error","unicorn/prefer-ternary":"error","unicorn/prefer-top-level-await":"error","unicorn/prefer-type-error":"error","unicorn/prevent-abbreviations":"error","unicorn/relative-url-style":"error","unicorn/require-array-join-separator":"error","unicorn/require-module-attributes":"error","unicorn/require-module-specifiers":"error","unicorn/require-number-to-fixed-digits-argument":"error","unicorn/require-post-message-target-origin":"error","unicorn/string-content":"error","unicorn/switch-case-braces":"error","unicorn/template-indent":"off","unicorn/text-encoding-identifier-case":"error","unicorn/throw-new-error":"error","lodash/callback-binding":"error","lodash/chain-style":[2,"as-needed"],"lodash/chaining":"error","lodash/collection-method-value":"error","lodash/collection-ordering":"error","lodash/collection-return":"error","lodash/consistent-compose":[2,"flow"],"lodash/identity-shorthand":[2,"always"],"lodash/import-scope":[2,"method"],"lodash/matches-prop-shorthand":[2,"always"],"lodash/matches-shorthand":[2,"always",3],"lodash/no-commit":"error","lodash/no-double-unwrap":"error","lodash/no-extra-args":"error","lodash/no-unbound-this":"error","lodash/path-style":[2,"array"],"lodash/prefer-compact":"error","lodash/prefer-constant":"error","lodash/prefer-filter":"error","lodash/prefer-find":"error","lodash/prefer-flat-map":"error","lodash/prefer-get":"error","lodash/prefer-immutable-method":"error","lodash/prefer-includes":[2,{includeNative:!0}],"lodash/prefer-invoke-map":"error","lodash/prefer-is-nil":"error","lodash/prefer-lodash-chain":"error","lodash/prefer-lodash-method":"error","lodash/prefer-lodash-typecheck":"error","lodash/prefer-map":"error","lodash/prefer-matches":"error","lodash/prefer-noop":"error","lodash/prefer-over-quantifier":"error","lodash/prefer-reject":"error","lodash/prefer-some":[2,{includeNative:!0}],"lodash/prefer-startswith":"error","lodash/prefer-thru":"error","lodash/prefer-times":"error","lodash/prefer-wrapper-method":"error","lodash/preferred-alias":"error","lodash/prop-shorthand":[2,"always"],"lodash/unwrap":"error","sonar/anchor-precedence":"error","sonar/argument-type":"error","sonar/arguments-order":"error","sonar/arguments-usage":"error","sonar/array-callback-without-return":"error","sonar/array-constructor":"error","sonar/arrow-function-convention":"off","sonar/assertions-in-tests":"error","sonar/aws-apigateway-public-api":"error","sonar/aws-ec2-rds-dms-public":"error","sonar/aws-ec2-unencrypted-ebs-volume":"error","sonar/aws-efs-unencrypted":"error","sonar/aws-iam-all-privileges":"error","sonar/aws-iam-all-resources-accessible":"error","sonar/aws-iam-privilege-escalation":"error","sonar/aws-iam-public-access":"error","sonar/aws-opensearchservice-domain":"error","sonar/aws-rds-unencrypted-databases":"error","sonar/aws-restricted-ip-admin-access":"error","sonar/aws-s3-bucket-granted-access":"error","sonar/aws-s3-bucket-insecure-http":"error","sonar/aws-s3-bucket-public-access":"error","sonar/aws-s3-bucket-versioning":"error","sonar/aws-sagemaker-unencrypted-notebook":"error","sonar/aws-sns-unencrypted-topics":"error","sonar/aws-sqs-unencrypted-queue":"error","sonar/bitwise-operators":"error","sonar/block-scoped-var":"error","sonar/bool-param-default":"error","sonar/call-argument-line":"error","sonar/chai-determinate-assertion":"error","sonar/class-name":"error","sonar/class-prototype":"error","sonar/code-eval":"error","sonar/cognitive-complexity":"error","sonar/comma-or-logical-or-case":"error","sonar/comment-regex":"off","sonar/concise-regex":"error","sonar/confidential-information-logging":"error","sonar/constructor-for-side-effects":"error","sonar/content-length":"error","sonar/content-security-policy":"error","sonar/cookie-no-httponly":"error","sonar/cors":"error","sonar/csrf":"error","sonar/cyclomatic-complexity":"off","sonar/declarations-in-global-scope":"error","sonar/deprecation":"error","sonar/destructuring-assignment-syntax":"error","sonar/different-types-comparison":"error","sonar/disabled-auto-escaping":"error","sonar/disabled-resource-integrity":"error","sonar/disabled-timeout":"error","sonar/duplicates-in-character-class":"error","sonar/elseif-without-else":"error","sonar/empty-string-repetition":"error","sonar/encryption-secure-mode":"error","sonar/existing-groups":"error","sonar/expression-complexity":"error","sonar/file-header":"off","sonar/file-name-differ-from-class":"error","sonar/file-permissions":"error","sonar/file-uploads":"error","sonar/fixme-tag":"error","sonar/for-in":"error","sonar/for-loop-increment-sign":"error","sonar/frame-ancestors":"error","sonar/function-inside-loop":"error","sonar/function-name":["error",{format:"^(?:[a-z][a-zA-Z0-9]*|[A-Z][A-Z0-9]*)$"}],"sonar/function-return-type":"off","sonar/future-reserved-words":"error","sonar/generator-without-yield":"error","sonar/hashing":"error","sonar/hidden-files":"error","sonar/in-operator-type-error":"error","sonar/inconsistent-function-call":"error","sonar/index-of-compare-to-positive-number":"error","sonar/insecure-cookie":"error","sonar/insecure-jwt-token":"error","sonar/inverted-assertion-arguments":"error","sonar/jsx-no-leaked-render":"error","sonar/label-position":"error","sonar/link-with-target-blank":"error","sonar/max-lines":"error","sonar/max-lines-per-function":"error","sonar/max-switch-cases":"error","sonar/max-union-size":"off","sonar/misplaced-loop-counter":"error","sonar/nested-control-flow":"error","sonar/new-operator-misuse":"error","sonar/no-all-duplicated-branches":"error","sonar/no-alphabetical-sort":"error","sonar/no-angular-bypass-sanitization":"error","sonar/no-array-delete":"error","sonar/no-associative-arrays":"error","sonar/no-async-constructor":"error","sonar/no-built-in-override":"error","sonar/no-case-label-in-switch":"error","sonar/no-clear-text-protocols":"error","sonar/no-code-after-done":"error","sonar/no-collapsible-if":"error","sonar/no-collection-size-mischeck":"error","sonar/no-commented-code":"error","sonar/no-control-regex":"error","sonar/no-dead-store":"error","sonar/no-delete-var":"error","sonar/no-duplicate-in-composite":"error","sonar/no-duplicate-string":"error","sonar/no-duplicated-branches":"error","sonar/no-element-overwrite":"error","sonar/no-empty-after-reluctant":"error","sonar/no-empty-alternatives":"error","sonar/no-empty-character-class":"error","sonar/no-empty-collection":"error","sonar/no-empty-group":"error","sonar/no-empty-test-file":"error","sonar/no-equals-in-for-termination":"error","sonar/no-exclusive-tests":"error","sonar/no-extra-arguments":"error","sonar/no-fallthrough":"error","sonar/no-for-in-iterable":"error","sonar/no-function-declaration-in-block":"error","sonar/no-global-this":"error","sonar/no-globals-shadowing":"error","sonar/no-gratuitous-expressions":"error","sonar/no-hardcoded-ip":"error","sonar/no-hardcoded-passwords":"error","sonar/no-hardcoded-secrets":"error","sonar/no-hook-setter-in-body":"error","sonar/no-identical-conditions":"error","sonar/no-identical-expressions":"error","sonar/no-identical-functions":"error","sonar/no-ignored-exceptions":"error","sonar/no-ignored-return":"error","sonar/no-implicit-dependencies":"off","sonar/no-implicit-global":"error","sonar/no-in-misuse":"error","sonar/no-incomplete-assertions":"error","sonar/no-inconsistent-returns":"off","sonar/no-incorrect-string-concat":"error","sonar/no-internal-api-use":"error","sonar/no-intrusive-permissions":"error","sonar/no-invalid-regexp":"error","sonar/no-invariant-returns":"error","sonar/no-inverted-boolean-check":"error","sonar/no-ip-forward":"error","sonar/no-labels":"error","sonar/no-literal-call":"error","sonar/no-mime-sniff":"error","sonar/no-misleading-array-reverse":"error","sonar/no-misleading-character-class":"error","sonar/no-mixed-content":"error","sonar/no-nested-assignment":"error","sonar/no-nested-conditional":"error","sonar/no-nested-functions":"error","sonar/no-nested-incdec":"error","sonar/no-nested-switch":"error","sonar/no-nested-template-literals":"error","sonar/no-os-command-from-path":"error","sonar/no-parameter-reassignment":"error","sonar/no-primitive-wrappers":"error","sonar/no-redundant-assignments":"error","sonar/no-redundant-boolean":"error","sonar/no-redundant-jump":"error","sonar/no-redundant-optional":"error","sonar/no-reference-error":"off","sonar/no-referrer-policy":"error","sonar/no-regex-spaces":"error","sonar/no-require-or-define":"error","sonar/no-return-type-any":"error","sonar/no-same-argument-assert":"error","sonar/no-same-line-conditional":"error","sonar/no-selector-parameter":"error","sonar/no-skipped-tests":"error","sonar/no-small-switch":"error","sonar/no-sonar-comments":"error","sonar/no-table-as-layout":"error","sonar/no-try-promise":"error","sonar/no-undefined-argument":"error","sonar/no-undefined-assignment":"off","sonar/no-unenclosed-multiline-block":"error","sonar/no-uniq-key":"error","sonar/no-unsafe-unzip":"error","sonar/no-unthrown-error":"error","sonar/no-unused-collection":"error","sonar/no-unused-function-argument":"error","sonar/no-unused-vars":"error","sonar/no-use-of-empty-return-value":"error","sonar/no-useless-catch":"error","sonar/no-useless-increment":"error","sonar/no-useless-intersection":"error","sonar/no-useless-react-setstate":"error","sonar/no-variable-usage-before-declaration":"error","sonar/no-weak-cipher":"error","sonar/no-weak-keys":"error","sonar/no-wildcard-import":"error","sonar/non-existent-operator":"error","sonar/non-number-in-arithmetic-expression":"error","sonar/null-dereference":"error","sonar/object-alt-content":"error","sonar/operation-returning-nan":"error","sonar/os-command":"error","sonar/post-message":"error","sonar/prefer-default-last":"error","sonar/prefer-immediate-return":"error","sonar/prefer-object-literal":"error","sonar/prefer-promise-shorthand":"error","sonar/prefer-read-only-props":"error","sonar/prefer-regexp-exec":"error","sonar/prefer-single-boolean-return":"error","sonar/prefer-type-guard":"error","sonar/prefer-while":"error","sonar/production-debug":"error","sonar/pseudo-random":"error","sonar/public-static-readonly":"error","sonar/publicly-writable-directories":"error","sonar/reduce-initial-value":"error","sonar/redundant-type-aliases":"error","sonar/regex-complexity":"error","sonar/session-regeneration":"error","sonar/shorthand-property-grouping":"off","sonar/single-char-in-character-classes":"error","sonar/single-character-alternation":"error","sonar/slow-regex":"error","sonar/sql-queries":"error","sonar/stable-tests":"error","sonar/stateful-regex":"error","sonar/strict-transport-security":"error","sonar/strings-comparison":"error","sonar/super-invocation":"error","sonar/table-header":"error","sonar/table-header-reference":"error","sonar/test-check-exception":"error","sonar/todo-tag":"off","sonar/too-many-break-or-continue-in-loop":"error","sonar/unicode-aware-regex":"error","sonar/unused-import":"error","sonar/unused-named-groups":"error","sonar/unverified-certificate":"error","sonar/unverified-hostname":"error","sonar/updated-const-var":"error","sonar/updated-loop-counter":"error","sonar/use-type-alias":"error","sonar/values-not-convertible-to-numbers":"error","sonar/variable-name":"error","sonar/void-use":"error","sonar/weak-ssl":"error","sonar/x-powered-by":"error","sonar/xml-parser-xxe":"error","perfectionist/sort-array-includes":"error","perfectionist/sort-classes":"error","perfectionist/sort-decorators":"error","perfectionist/sort-enums":"error","perfectionist/sort-exports":"error","perfectionist/sort-heritage-clauses":"error","perfectionist/sort-imports":"error","perfectionist/sort-interfaces":"error","perfectionist/sort-intersection-types":"error","perfectionist/sort-jsx-props":["error",{groups:["shorthand","multiline"]}],"perfectionist/sort-maps":"error","perfectionist/sort-modules":"error","perfectionist/sort-named-exports":"error","perfectionist/sort-named-imports":"error","perfectionist/sort-object-types":"error","perfectionist/sort-objects":["error",{partitionByComment:!0}],"perfectionist/sort-sets":"error","perfectionist/sort-switch-case":["error",{order:"asc",type:"alphabetical"}],"perfectionist/sort-union-types":"error","perfectionist/sort-variable-declarations":["error",{order:"asc",type:"alphabetical"}],"@tanstack/query/exhaustive-deps":"error","@tanstack/query/infinite-query-property-order":"error","@tanstack/query/mutation-property-order":"error","@tanstack/query/no-rest-destructuring":"error","@tanstack/query/no-unstable-deps":"error","@tanstack/query/no-void-query-fn":"error","@tanstack/query/stable-query-client":"error","@tanstack/router/create-route-property-order":"error","a11y/alt-text":"error","a11y/anchor-ambiguous-text":"error","a11y/anchor-has-content":"error","a11y/anchor-is-valid":"error","a11y/aria-activedescendant-has-tabindex":"error","a11y/aria-props":"error","a11y/aria-proptypes":"error","a11y/aria-role":"error","a11y/aria-unsupported-elements":"error","a11y/autocomplete-valid":"error","a11y/click-events-have-key-events":"error","a11y/control-has-associated-label":"off","a11y/heading-has-content":"error","a11y/html-has-lang":"error","a11y/iframe-has-title":"error","a11y/img-redundant-alt":"error","a11y/interactive-supports-focus":"error","a11y/label-has-associated-control":"error","a11y/lang":"error","a11y/media-has-caption":"off","a11y/mouse-events-have-key-events":"error","a11y/no-access-key":"error","a11y/no-aria-hidden-on-focusable":"error","a11y/no-autofocus":"error","a11y/no-distracting-elements":"error","a11y/no-interactive-element-to-noninteractive-role":"error","a11y/no-noninteractive-element-interactions":"error","a11y/no-noninteractive-element-to-interactive-role":"error","a11y/no-noninteractive-tabindex":"error","a11y/no-redundant-roles":"error","a11y/no-static-element-interactions":"error","a11y/prefer-tag-over-role":"error","a11y/role-has-required-aria-props":"error","a11y/role-supports-aria-props":"error","a11y/scope":"error","a11y/tabindex-no-positive":"error","cspell/spellchecker":["error",{cspell:{words:["tauri","Applynetic","julianday","typicode","toolbelt","taze","ethang","TSESTree","Boop","cldr","astro","laravel","qwik","sitecore","uswds","mediat","Packt","Academind","Udemy","Colte","Bootcamp","HTMX","MERN","Nuxt","Credly","Sterett","Beyonder","hotspot","lqip","Hawn","nextui","speculationrules","zustand","vinxi","datasource","turso","supabase","solidjs","labelledby","svix","blockqoute","cortexjs","mathrm","nums","lifecycles","krausest","Signalis","Plass","Iteree","Sonner","cmdk","ngsw","dexie","leetcode","ngsrc","sindresorhus","rogan","heroui","millis","duckdb","pthread","remeda","radash","noto","nosniff","SAMEORIGIN","starcoder","logprobs","sealioning","swebok","pluralsight","skillset","junie"]}}]}},{files:["**/*.md"],plugins:{markdown:u},rules:{"markdown/fenced-code-language":"error","markdown/heading-increment":"error","markdown/no-bare-urls":"error","markdown/no-duplicate-definitions":"error","markdown/no-duplicate-headings":"error","markdown/no-empty-definitions":"error","markdown/no-empty-images":"error","markdown/no-empty-links":"error","markdown/no-html":"error","markdown/no-invalid-label-refs":"error","markdown/no-missing-atx-heading-space":"error","markdown/no-missing-label-refs":"error","markdown/no-missing-link-fragments":"error","markdown/no-multiple-h1":"error","markdown/no-reference-like-urls":"error","markdown/no-reversed-media-syntax":"error","markdown/no-space-in-emphasis":"error","markdown/no-unused-definitions":"error","markdown/require-alt-text":"error","markdown/table-column-count":"error"}},{files:["**/*.css"],language:"css/css",plugins:{css:i},rules:{"css/font-family-fallbacks":"error","css/no-duplicate-imports":"error","css/no-duplicate-keyframe-selectors":"error","css/no-empty-blocks":"error","css/no-important":"error","css/no-invalid-at-rule-placement":"error","css/no-invalid-at-rules":"off","css/no-invalid-named-grid-areas":"error","css/no-invalid-properties":"error","css/no-unmatchable-selectors":"error","css/prefer-logical-properties":"error","css/relative-font-units":"error","css/selector-complexity":"error","css/use-baseline":["error",{available:"newly"}],"css/use-layers":"error"}},{files:["**/*.json"],language:"json/json",plugins:{json:r},rules:{"json/no-duplicate-keys":"error","json/no-empty-keys":"error","json/no-unnormalized-keys":"error","json/no-unsafe-values":"error","json/sort-keys":"error","json/top-level-interop":"error"}},{files:["**/*.jsonc"],language:"json/jsonc",plugins:{json:r},rules:{"json/no-duplicate-keys":"error","json/no-empty-keys":"error","json/no-unnormalized-keys":"error","json/no-unsafe-values":"error","json/sort-keys":"error","json/top-level-interop":"error"}},{files:["**/*.json5"],language:"json/json5",plugins:{json:r},rules:{"json/no-duplicate-keys":"error","json/no-empty-keys":"error","json/no-unnormalized-keys":"error","json/no-unsafe-values":"error","json/sort-keys":"error","json/top-level-interop":"error"}},c,p);export{_ as default};
|
|
2
|
+
//# sourceMappingURL=eslint.config.js.map
|
|
@@ -0,0 +1,67 @@
|
|
|
1
|
+
{
|
|
2
|
+
"author": "Ethan Glover",
|
|
3
|
+
"browserslist": [
|
|
4
|
+
"extends browserslist-config-baseline",
|
|
5
|
+
"current node"
|
|
6
|
+
],
|
|
7
|
+
"dependencies": {
|
|
8
|
+
"@angular-eslint/eslint-plugin": "^21.1.0",
|
|
9
|
+
"@angular-eslint/eslint-plugin-template": "^21.1.0",
|
|
10
|
+
"@angular-eslint/template-parser": "^21.1.0",
|
|
11
|
+
"@cspell/eslint-plugin": "^9.4.0",
|
|
12
|
+
"@eslint-react/eslint-plugin": "^2.3.13",
|
|
13
|
+
"@eslint/css": "0.14.1",
|
|
14
|
+
"@eslint/js": "^9.39.2",
|
|
15
|
+
"@eslint/json": "^0.14.0",
|
|
16
|
+
"@eslint/markdown": "^7.5.1",
|
|
17
|
+
"@html-eslint/eslint-plugin": "^0.51.0",
|
|
18
|
+
"@tanstack/eslint-plugin-query": "^5.91.2",
|
|
19
|
+
"@tanstack/eslint-plugin-router": "^1.141.0",
|
|
20
|
+
"@typescript-eslint/parser": "^8.49.0",
|
|
21
|
+
"angular-eslint": "21.1.0",
|
|
22
|
+
"eslint": "^9.39.2",
|
|
23
|
+
"eslint-config-prettier": "^10.1.8",
|
|
24
|
+
"eslint-plugin-astro": "^1.5.0",
|
|
25
|
+
"eslint-plugin-compat": "^6.0.2",
|
|
26
|
+
"eslint-plugin-jsx-a11y": "^6.10.2",
|
|
27
|
+
"eslint-plugin-lodash": "^8.0.0",
|
|
28
|
+
"eslint-plugin-perfectionist": "^4.15.1",
|
|
29
|
+
"eslint-plugin-prettier": "^5.5.4",
|
|
30
|
+
"eslint-plugin-react-hooks": "^7.0.1",
|
|
31
|
+
"eslint-plugin-solid": "^0.14.5",
|
|
32
|
+
"eslint-plugin-sonarjs": "3.0.5",
|
|
33
|
+
"eslint-plugin-storybook": "^10.1.8",
|
|
34
|
+
"eslint-plugin-tailwindcss": "^4.0.0-beta.0",
|
|
35
|
+
"eslint-plugin-unicorn": "^62.0.0",
|
|
36
|
+
"prettier": "^3.7.4",
|
|
37
|
+
"typescript-eslint": "^8.49.0"
|
|
38
|
+
},
|
|
39
|
+
"devDependencies": {
|
|
40
|
+
"@ethang/markdown-generator": "^1.1.5",
|
|
41
|
+
"@ethang/toolbelt": "^4.4.11",
|
|
42
|
+
"@types/eslint-plugin-jsx-a11y": "^6.10.1",
|
|
43
|
+
"@types/eslint-plugin-tailwindcss": "^3.17.0",
|
|
44
|
+
"@types/lodash": "^4.17.21",
|
|
45
|
+
"@types/node": "^25.0.2",
|
|
46
|
+
"browserslist-config-baseline": "^0.5.0",
|
|
47
|
+
"lodash": "^4.17.21",
|
|
48
|
+
"tailwindcss": "^4.1.18",
|
|
49
|
+
"typescript": "^5.9.3",
|
|
50
|
+
"zod": "^4.1.13"
|
|
51
|
+
},
|
|
52
|
+
"engines": {
|
|
53
|
+
"node": ">=24"
|
|
54
|
+
},
|
|
55
|
+
"license": "ISC",
|
|
56
|
+
"main": "eslint.config.js",
|
|
57
|
+
"name": "@ethang/eslint-config",
|
|
58
|
+
"repository": {
|
|
59
|
+
"url": "git+https://github.com/eglove/ethang-monorepo.git#master"
|
|
60
|
+
},
|
|
61
|
+
"scripts": {
|
|
62
|
+
"build": "bun build.ts && pnpm lint",
|
|
63
|
+
"lint": "eslint . --fix --concurrency=auto && prettier src --write"
|
|
64
|
+
},
|
|
65
|
+
"type": "module",
|
|
66
|
+
"version": "24.0.2"
|
|
67
|
+
}
|
package/eslint.config.js
CHANGED
|
@@ -1,2 +1,28 @@
|
|
|
1
|
-
import{a as e,b as o}from"./chunk-WK3YS7OG.js";import{defineConfig as n}from"eslint/config";import s from"eslint-plugin-jsx-a11y";import t from"eslint-plugin-compat";import a from"@cspell/eslint-plugin";import i from"@eslint/css";import c from"eslint-config-prettier";import p from"eslint-plugin-prettier/recommended";import r from"@eslint/json";import l from"eslint-plugin-lodash";import u from"@eslint/markdown";import d from"eslint-plugin-perfectionist";import f from"eslint-plugin-sonarjs";import m from"@tanstack/eslint-plugin-query";import y from"@tanstack/eslint-plugin-router";import g from"typescript-eslint";import h from"eslint-plugin-unicorn";var _=n({files:["**/*.{js,ts,jsx,tsx,cjs,cts,mjs,mts}"],ignores:e,languageOptions:o,settings:{react:{version:"19.2.3"}},plugins:{compat:t,"@typescript-eslint":g.plugin,unicorn:h,lodash:l,sonar:f,perfectionist:d,"@tanstack/query":m,"@tanstack/router":y,a11y:s,cspell:a},rules:{"compat/compat":"error","accessor-pairs":"error","array-callback-return":"error","arrow-body-style":["error","always"],"block-scoped-var":"error",camelcase:"off","capitalized-comments":"off","class-methods-use-this":"off",complexity:"off","consistent-return":"off","consistent-this":"off","constructor-super":"error",curly:"off","default-case":"off","default-case-last":"off","default-param-last":"off","dot-notation":"off",eqeqeq:"error","for-direction":"error","func-name-matching":"error","func-names":"off","func-style":["error","declaration",{allowArrowFunctions:!0}],"getter-return":"error","grouped-accessor-pairs":"error","guard-for-in":"error","id-denylist":"off","id-length":"off","id-match":"off","init-declarations":"off","logical-assignment-operators":"error","max-classes-per-file":"error","max-depth":"error","max-lines":"off","max-lines-per-function":"off","max-nested-callbacks":"error","max-params":"off","max-statements":"off","new-cap":"off","no-alert":"error","no-array-constructor":"off","no-async-promise-executor":"error","no-await-in-loop":"error","no-bitwise":"error","no-caller":"error","no-case-declarations":"error","no-class-assign":"error","no-compare-neg-zero":"error","no-cond-assign":"error","no-console":"error","no-const-assign":"error","no-constant-binary-expression":"error","no-constant-condition":"error","no-constructor-return":"error","no-continue":"error","no-control-regex":"error","no-debugger":"error","no-delete-var":"error","no-div-regex":"error","no-dupe-args":"error","no-dupe-class-members":"off","no-dupe-else-if":"error","no-dupe-keys":"error","no-duplicate-case":"error","no-duplicate-imports":"error","no-else-return":"error","no-empty":"error","no-empty-character-class":"error","no-empty-function":"off","no-empty-pattern":"error","no-empty-static-block":"error","no-eq-null":"error","no-eval":"error","no-ex-assign":"error","no-extend-native":"error","no-extra-bind":"error","no-extra-boolean-cast":"error","no-extra-label":"error","no-fallthrough":"error","no-func-assign":"error","no-global-assign":"error","no-implicit-coercion":"error","no-implicit-globals":"off","no-implied-eval":"off","no-import-assign":"error","no-inline-comments":"off","no-inner-declarations":"error","no-invalid-regexp":"error","no-invalid-this":"error","no-irregular-whitespace":"error","no-iterator":"error","no-label-var":"error","no-labels":"error","no-lone-blocks":"error","no-lonely-if":"error","no-loop-func":"error","no-loss-of-precision":"error","no-magic-numbers":"off","no-misleading-character-class":"error","no-multi-assign":"error","no-multi-str":"error","no-negated-condition":"error","no-nested-ternary":"error","no-new":"error","no-new-func":"error","no-new-native-nonconstructor":"error","no-new-wrappers":"error","no-nonoctal-decimal-escape":"error","no-obj-calls":"error","no-object-constructor":"error","no-octal":"error","no-octal-escape":"error","no-param-reassign":"error","no-plusplus":"error","no-promise-executor-return":"error","no-proto":"error","no-prototype-builtins":"error","no-redeclare":"off","no-regex-spaces":"error","no-restricted-exports":"off","no-restricted-globals":"off","no-restricted-imports":"off","no-restricted-properties":"off","no-restricted-syntax":"off","no-return-assign":"error","no-script-url":"error","no-self-assign":"error","no-self-compare":"error","no-sequences":"error","no-setter-return":"error","no-shadow":"off","no-shadow-restricted-names":"error","no-sparse-arrays":"error","no-template-curly-in-string":"off","no-ternary":"off","no-this-before-super":"error","no-throw-literal":"off","no-unassigned-vars":"error","no-undef":"off","no-undef-init":"error","no-undefined":"off","no-underscore-dangle":"off","no-unexpected-multiline":"off","no-unmodified-loop-condition":"error","no-unneeded-ternary":"error","no-unreachable":"error","no-unreachable-loop":"error","no-unsafe-finally":"error","no-unsafe-negation":"error","no-unsafe-optional-chaining":["error",{disallowArithmeticOperators:!0}],"no-unused-expressions":"off","no-unused-labels":"error","no-unused-private-class-members":"error","no-unused-vars":"off","no-use-before-define":"off","no-useless-assignment":"off","no-useless-backreference":"error","no-useless-call":"error","no-useless-catch":"error","no-useless-computed-key":"error","no-useless-concat":"error","no-useless-constructor":"off","no-useless-escape":"error","no-useless-rename":"error","no-useless-return":"error","no-var":"error","no-void":"error","no-warning-comments":"off","no-with":"error","object-shorthand":"error","one-var":"off","operator-assignment":"error","prefer-arrow-callback":"off","prefer-const":"error","prefer-destructuring":"off","prefer-exponentiation-operator":"error","prefer-named-capture-group":"error","prefer-numeric-literals":"error","prefer-object-has-own":"error","prefer-object-spread":"error","prefer-promise-reject-errors":"off","prefer-regex-literals":"error","prefer-rest-params":"error","prefer-spread":"error","prefer-template":"error","preserve-caught-error":"error",radix:"error","require-atomic-updates":"error","require-await":"off","require-unicode-regexp":"error","require-yield":"error","sort-imports":"off","sort-keys":"off","sort-vars":"error",strict:"error","symbol-description":"error","unicode-bom":"error","use-isnan":"error","valid-typeof":"error","vars-on-top":"error",yoda:["error","always"],"@typescript-eslint/adjacent-overload-signatures":"off","@typescript-eslint/array-type":"error","@typescript-eslint/await-thenable":"error","@typescript-eslint/ban-ts-comment":"error","@typescript-eslint/ban-tslint-comment":"error","@typescript-eslint/class-literal-property-style":"error","@typescript-eslint/class-methods-use-this":"off","@typescript-eslint/consistent-generic-constructors":"error","@typescript-eslint/consistent-indexed-object-style":"error","@typescript-eslint/consistent-return":"off","@typescript-eslint/consistent-type-assertions":"error","@typescript-eslint/consistent-type-definitions":["error","type"],"@typescript-eslint/consistent-type-exports":"error","@typescript-eslint/consistent-type-imports":["error",{fixStyle:"inline-type-imports"}],"@typescript-eslint/default-param-last":"error","@typescript-eslint/dot-notation":"error","@typescript-eslint/explicit-function-return-type":"off","@typescript-eslint/explicit-member-accessibility":"error","@typescript-eslint/explicit-module-boundary-types":"off","@typescript-eslint/init-declarations":"off","@typescript-eslint/max-params":"off","@typescript-eslint/member-ordering":"off","@typescript-eslint/method-signature-style":"error","@typescript-eslint/naming-convention":"off","@typescript-eslint/no-array-constructor":"error","@typescript-eslint/no-array-delete":"error","@typescript-eslint/no-base-to-string":"error","@typescript-eslint/no-confusing-non-null-assertion":"error","@typescript-eslint/no-confusing-void-expression":"error","@typescript-eslint/no-deprecated":"error","@typescript-eslint/no-dupe-class-members":"off","@typescript-eslint/no-duplicate-enum-values":"error","@typescript-eslint/no-duplicate-type-constituents":"error","@typescript-eslint/no-dynamic-delete":"error","@typescript-eslint/no-empty-function":"error","@typescript-eslint/no-empty-object-type":"error","@typescript-eslint/no-explicit-any":"error","@typescript-eslint/no-extra-non-null-assertion":"error","@typescript-eslint/no-extraneous-class":"error","@typescript-eslint/no-floating-promises":"error","@typescript-eslint/no-for-in-array":"error","@typescript-eslint/no-implied-eval":"error","@typescript-eslint/no-import-type-side-effects":"error","@typescript-eslint/no-inferrable-types":"error","@typescript-eslint/no-invalid-this":"off","@typescript-eslint/no-invalid-void-type":"error","@typescript-eslint/no-loop-func":"error","@typescript-eslint/no-magic-numbers":"off","@typescript-eslint/no-meaningless-void-operator":"error","@typescript-eslint/no-misused-new":"error","@typescript-eslint/no-misused-promises":"error","@typescript-eslint/no-misused-spread":"error","@typescript-eslint/no-mixed-enums":"error","@typescript-eslint/no-namespace":"error","@typescript-eslint/no-non-null-asserted-nullish-coalescing":"error","@typescript-eslint/no-non-null-asserted-optional-chain":"error","@typescript-eslint/no-non-null-assertion":"error","@typescript-eslint/no-redeclare":"off","@typescript-eslint/no-redundant-type-constituents":"error","@typescript-eslint/no-require-imports":"error","@typescript-eslint/no-restricted-imports":"error","@typescript-eslint/no-restricted-types":"error","@typescript-eslint/no-shadow":"error","@typescript-eslint/no-this-alias":"error","@typescript-eslint/no-unnecessary-boolean-literal-compare":"error","@typescript-eslint/no-unnecessary-condition":"error","@typescript-eslint/no-unnecessary-parameter-property-assignment":"error","@typescript-eslint/no-unnecessary-qualifier":"error","@typescript-eslint/no-unnecessary-template-expression":"error","@typescript-eslint/no-unnecessary-type-arguments":"error","@typescript-eslint/no-unnecessary-type-assertion":"error","@typescript-eslint/no-unnecessary-type-constraint":"error","@typescript-eslint/no-unnecessary-type-conversion":"error","@typescript-eslint/no-unnecessary-type-parameters":"off","@typescript-eslint/no-unsafe-argument":"error","@typescript-eslint/no-unsafe-assignment":"error","@typescript-eslint/no-unsafe-call":"error","@typescript-eslint/no-unsafe-declaration-merging":"error","@typescript-eslint/no-unsafe-enum-comparison":"error","@typescript-eslint/no-unsafe-function-type":"error","@typescript-eslint/no-unsafe-member-access":"error","@typescript-eslint/no-unsafe-return":"error","@typescript-eslint/no-unsafe-type-assertion":"error","@typescript-eslint/no-unsafe-unary-minus":"error","@typescript-eslint/no-unused-expressions":"error","@typescript-eslint/no-unused-private-class-members":"error","@typescript-eslint/no-unused-vars":["error",{args:"all",argsIgnorePattern:"^_",caughtErrors:"all",caughtErrorsIgnorePattern:"^_",destructuredArrayIgnorePattern:"^_",ignoreRestSiblings:!0,varsIgnorePattern:"^_"}],"@typescript-eslint/no-use-before-define":"off","@typescript-eslint/no-useless-constructor":"error","@typescript-eslint/no-useless-empty-export":"error","@typescript-eslint/no-wrapper-object-types":"error","@typescript-eslint/non-nullable-type-assertion-style":"error","@typescript-eslint/only-throw-error":"error","@typescript-eslint/parameter-properties":"off","@typescript-eslint/prefer-as-const":"error","@typescript-eslint/prefer-destructuring":"error","@typescript-eslint/prefer-enum-initializers":"error","@typescript-eslint/prefer-find":"error","@typescript-eslint/prefer-for-of":"error","@typescript-eslint/prefer-function-type":"error","@typescript-eslint/prefer-includes":"error","@typescript-eslint/prefer-literal-enum-member":"error","@typescript-eslint/prefer-namespace-keyword":"error","@typescript-eslint/prefer-nullish-coalescing":"error","@typescript-eslint/prefer-optional-chain":"error","@typescript-eslint/prefer-promise-reject-errors":"error","@typescript-eslint/prefer-readonly":"error","@typescript-eslint/prefer-readonly-parameter-types":"off","@typescript-eslint/prefer-reduce-type-parameter":"error","@typescript-eslint/prefer-regexp-exec":"error","@typescript-eslint/prefer-return-this-type":"error","@typescript-eslint/prefer-string-starts-ends-with":"error","@typescript-eslint/promise-function-async":"error","@typescript-eslint/related-getter-setter-pairs":"error","@typescript-eslint/require-array-sort-compare":"error","@typescript-eslint/require-await":"error","@typescript-eslint/restrict-plus-operands":"error","@typescript-eslint/restrict-template-expressions":"error","@typescript-eslint/return-await":"error","@typescript-eslint/strict-boolean-expressions":"error","@typescript-eslint/switch-exhaustiveness-check":"error","@typescript-eslint/triple-slash-reference":"error","@typescript-eslint/unbound-method":"error","@typescript-eslint/unified-signatures":"error","@typescript-eslint/use-unknown-in-catch-callback-variable":"error","unicorn/better-regex":"error","unicorn/catch-error-name":"error","unicorn/consistent-assert":"error","unicorn/consistent-date-clone":"error","unicorn/consistent-destructuring":"error","unicorn/consistent-empty-array-spread":"error","unicorn/consistent-existence-index-check":"error","unicorn/consistent-function-scoping":"error","unicorn/custom-error-definition":"error","unicorn/empty-brace-spaces":"off","unicorn/error-message":"error","unicorn/escape-case":"error","unicorn/expiring-todo-comments":"error","unicorn/explicit-length-check":"off","unicorn/filename-case":"error","unicorn/import-style":"error","unicorn/new-for-builtins":"error","unicorn/no-abusive-eslint-disable":"error","unicorn/no-accessor-recursion":"error","unicorn/no-anonymous-default-export":"error","unicorn/no-array-callback-reference":"error","unicorn/no-array-for-each":"error","unicorn/no-array-method-this-argument":"error","unicorn/no-array-reduce":"error","unicorn/no-array-reverse":"error","unicorn/no-array-sort":"error","unicorn/no-await-expression-member":"error","unicorn/no-await-in-promise-methods":"error","unicorn/no-console-spaces":"error","unicorn/no-document-cookie":"error","unicorn/no-empty-file":"error","unicorn/no-for-loop":"error","unicorn/no-hex-escape":"error","unicorn/no-immediate-mutation":"error","unicorn/no-instanceof-builtins":"error","unicorn/no-invalid-fetch-options":"error","unicorn/no-invalid-remove-event-listener":"error","unicorn/no-keyword-prefix":"off","unicorn/no-lonely-if":"error","unicorn/no-magic-array-flat-depth":"error","unicorn/no-named-default":"error","unicorn/no-negated-condition":"error","unicorn/no-negation-in-equality-check":"error","unicorn/no-nested-ternary":"off","unicorn/no-new-array":"error","unicorn/no-new-buffer":"error","unicorn/no-null":"off","unicorn/no-object-as-default-parameter":"error","unicorn/no-process-exit":"error","unicorn/no-single-promise-in-promise-methods":"error","unicorn/no-static-only-class":"error","unicorn/no-thenable":"error","unicorn/no-this-assignment":"error","unicorn/no-typeof-undefined":"error","unicorn/no-unnecessary-array-flat-depth":"error","unicorn/no-unnecessary-array-splice-count":"error","unicorn/no-unnecessary-await":"error","unicorn/no-unnecessary-polyfills":"error","unicorn/no-unnecessary-slice-end":"error","unicorn/no-unreadable-array-destructuring":"error","unicorn/no-unreadable-iife":"error","unicorn/no-unused-properties":"error","unicorn/no-useless-collection-argument":"error","unicorn/no-useless-error-capture-stack-trace":"error","unicorn/no-useless-fallback-in-spread":"error","unicorn/no-useless-length-check":"error","unicorn/no-useless-promise-resolve-reject":"error","unicorn/no-useless-spread":"error","unicorn/no-useless-switch-case":"error","unicorn/no-useless-undefined":"error","unicorn/no-zero-fractions":"error","unicorn/number-literal-case":"off","unicorn/numeric-separators-style":"error","unicorn/prefer-add-event-listener":"error","unicorn/prefer-array-find":"error","unicorn/prefer-array-flat":"error","unicorn/prefer-array-flat-map":"error","unicorn/prefer-array-index-of":"error","unicorn/prefer-array-some":"error","unicorn/prefer-at":"error","unicorn/prefer-bigint-literals":"error","unicorn/prefer-blob-reading-methods":"error","unicorn/prefer-class-fields":"error","unicorn/prefer-classlist-toggle":"error","unicorn/prefer-code-point":"error","unicorn/prefer-date-now":"error","unicorn/prefer-default-parameters":"error","unicorn/prefer-dom-node-append":"error","unicorn/prefer-dom-node-dataset":"error","unicorn/prefer-dom-node-remove":"error","unicorn/prefer-dom-node-text-content":"error","unicorn/prefer-event-target":"error","unicorn/prefer-export-from":"error","unicorn/prefer-global-this":"error","unicorn/prefer-import-meta-properties":"error","unicorn/prefer-includes":"error","unicorn/prefer-json-parse-buffer":"error","unicorn/prefer-keyboard-event-key":"error","unicorn/prefer-logical-operator-over-ternary":"error","unicorn/prefer-math-min-max":"error","unicorn/prefer-math-trunc":"error","unicorn/prefer-modern-dom-apis":"error","unicorn/prefer-modern-math-apis":"error","unicorn/prefer-module":"error","unicorn/prefer-native-coercion-functions":"error","unicorn/prefer-negative-index":"error","unicorn/prefer-node-protocol":"error","unicorn/prefer-number-properties":"error","unicorn/prefer-object-from-entries":"error","unicorn/prefer-optional-catch-binding":"error","unicorn/prefer-prototype-methods":"error","unicorn/prefer-query-selector":"error","unicorn/prefer-reflect-apply":"error","unicorn/prefer-regexp-test":"error","unicorn/prefer-response-static-json":"error","unicorn/prefer-set-has":"error","unicorn/prefer-set-size":"error","unicorn/prefer-single-call":"error","unicorn/prefer-spread":"error","unicorn/prefer-string-raw":"error","unicorn/prefer-string-replace-all":"error","unicorn/prefer-string-slice":"error","unicorn/prefer-string-starts-ends-with":"error","unicorn/prefer-string-trim-start-end":"error","unicorn/prefer-structured-clone":"error","unicorn/prefer-switch":"error","unicorn/prefer-ternary":"error","unicorn/prefer-top-level-await":"error","unicorn/prefer-type-error":"error","unicorn/prevent-abbreviations":"error","unicorn/relative-url-style":"error","unicorn/require-array-join-separator":"error","unicorn/require-module-attributes":"error","unicorn/require-module-specifiers":"error","unicorn/require-number-to-fixed-digits-argument":"error","unicorn/require-post-message-target-origin":"error","unicorn/string-content":"error","unicorn/switch-case-braces":"error","unicorn/template-indent":"off","unicorn/text-encoding-identifier-case":"error","unicorn/throw-new-error":"error","lodash/callback-binding":"error","lodash/chain-style":[2,"as-needed"],"lodash/chaining":"error","lodash/collection-method-value":"error","lodash/collection-ordering":"error","lodash/collection-return":"error","lodash/consistent-compose":[2,"flow"],"lodash/identity-shorthand":[2,"always"],"lodash/import-scope":[2,"method"],"lodash/matches-prop-shorthand":[2,"always"],"lodash/matches-shorthand":[2,"always",3],"lodash/no-commit":"error","lodash/no-double-unwrap":"error","lodash/no-extra-args":"error","lodash/no-unbound-this":"error","lodash/path-style":[2,"array"],"lodash/prefer-compact":"error","lodash/prefer-constant":"error","lodash/prefer-filter":"error","lodash/prefer-find":"error","lodash/prefer-flat-map":"error","lodash/prefer-get":"error","lodash/prefer-immutable-method":"error","lodash/prefer-includes":[2,{includeNative:!0}],"lodash/prefer-invoke-map":"error","lodash/prefer-is-nil":"error","lodash/prefer-lodash-chain":"error","lodash/prefer-lodash-method":"error","lodash/prefer-lodash-typecheck":"error","lodash/prefer-map":"error","lodash/prefer-matches":"error","lodash/prefer-noop":"error","lodash/prefer-over-quantifier":"error","lodash/prefer-reject":"error","lodash/prefer-some":[2,{includeNative:!0}],"lodash/prefer-startswith":"error","lodash/prefer-thru":"error","lodash/prefer-times":"error","lodash/prefer-wrapper-method":"error","lodash/preferred-alias":"error","lodash/prop-shorthand":[2,"always"],"lodash/unwrap":"error","sonar/anchor-precedence":"error","sonar/argument-type":"error","sonar/arguments-order":"error","sonar/arguments-usage":"error","sonar/array-callback-without-return":"error","sonar/array-constructor":"error","sonar/arrow-function-convention":"off","sonar/assertions-in-tests":"error","sonar/aws-apigateway-public-api":"error","sonar/aws-ec2-rds-dms-public":"error","sonar/aws-ec2-unencrypted-ebs-volume":"error","sonar/aws-efs-unencrypted":"error","sonar/aws-iam-all-privileges":"error","sonar/aws-iam-all-resources-accessible":"error","sonar/aws-iam-privilege-escalation":"error","sonar/aws-iam-public-access":"error","sonar/aws-opensearchservice-domain":"error","sonar/aws-rds-unencrypted-databases":"error","sonar/aws-restricted-ip-admin-access":"error","sonar/aws-s3-bucket-granted-access":"error","sonar/aws-s3-bucket-insecure-http":"error","sonar/aws-s3-bucket-public-access":"error","sonar/aws-s3-bucket-versioning":"error","sonar/aws-sagemaker-unencrypted-notebook":"error","sonar/aws-sns-unencrypted-topics":"error","sonar/aws-sqs-unencrypted-queue":"error","sonar/bitwise-operators":"error","sonar/block-scoped-var":"error","sonar/bool-param-default":"error","sonar/call-argument-line":"error","sonar/chai-determinate-assertion":"error","sonar/class-name":"error","sonar/class-prototype":"error","sonar/code-eval":"error","sonar/cognitive-complexity":"error","sonar/comma-or-logical-or-case":"error","sonar/comment-regex":"off","sonar/concise-regex":"error","sonar/confidential-information-logging":"error","sonar/constructor-for-side-effects":"error","sonar/content-length":"error","sonar/content-security-policy":"error","sonar/cookie-no-httponly":"error","sonar/cors":"error","sonar/csrf":"error","sonar/cyclomatic-complexity":"off","sonar/declarations-in-global-scope":"error","sonar/deprecation":"error","sonar/destructuring-assignment-syntax":"error","sonar/different-types-comparison":"error","sonar/disabled-auto-escaping":"error","sonar/disabled-resource-integrity":"error","sonar/disabled-timeout":"error","sonar/duplicates-in-character-class":"error","sonar/elseif-without-else":"error","sonar/empty-string-repetition":"error","sonar/encryption-secure-mode":"error","sonar/existing-groups":"error","sonar/expression-complexity":"error","sonar/file-header":"off","sonar/file-name-differ-from-class":"error","sonar/file-permissions":"error","sonar/file-uploads":"error","sonar/fixme-tag":"error","sonar/for-in":"error","sonar/for-loop-increment-sign":"error","sonar/frame-ancestors":"error","sonar/function-inside-loop":"error","sonar/function-name":["error",{format:"^(?:[a-z][a-zA-Z0-9]*|[A-Z][A-Z0-9]*)$"}],"sonar/function-return-type":"off","sonar/future-reserved-words":"error","sonar/generator-without-yield":"error","sonar/hashing":"error","sonar/hidden-files":"error","sonar/in-operator-type-error":"error","sonar/inconsistent-function-call":"error","sonar/index-of-compare-to-positive-number":"error","sonar/insecure-cookie":"error","sonar/insecure-jwt-token":"error","sonar/inverted-assertion-arguments":"error","sonar/jsx-no-leaked-render":"error","sonar/label-position":"error","sonar/link-with-target-blank":"error","sonar/max-lines":"error","sonar/max-lines-per-function":"error","sonar/max-switch-cases":"error","sonar/max-union-size":"off","sonar/misplaced-loop-counter":"error","sonar/nested-control-flow":"error","sonar/new-operator-misuse":"error","sonar/no-all-duplicated-branches":"error","sonar/no-alphabetical-sort":"error","sonar/no-angular-bypass-sanitization":"error","sonar/no-array-delete":"error","sonar/no-associative-arrays":"error","sonar/no-async-constructor":"error","sonar/no-built-in-override":"error","sonar/no-case-label-in-switch":"error","sonar/no-clear-text-protocols":"error","sonar/no-code-after-done":"error","sonar/no-collapsible-if":"error","sonar/no-collection-size-mischeck":"error","sonar/no-commented-code":"error","sonar/no-control-regex":"error","sonar/no-dead-store":"error","sonar/no-delete-var":"error","sonar/no-duplicate-in-composite":"error","sonar/no-duplicate-string":"error","sonar/no-duplicated-branches":"error","sonar/no-element-overwrite":"error","sonar/no-empty-after-reluctant":"error","sonar/no-empty-alternatives":"error","sonar/no-empty-character-class":"error","sonar/no-empty-collection":"error","sonar/no-empty-group":"error","sonar/no-empty-test-file":"error","sonar/no-equals-in-for-termination":"error","sonar/no-exclusive-tests":"error","sonar/no-extra-arguments":"error","sonar/no-fallthrough":"error","sonar/no-for-in-iterable":"error","sonar/no-function-declaration-in-block":"error","sonar/no-global-this":"error","sonar/no-globals-shadowing":"error","sonar/no-gratuitous-expressions":"error","sonar/no-hardcoded-ip":"error","sonar/no-hardcoded-passwords":"error","sonar/no-hardcoded-secrets":"error","sonar/no-hook-setter-in-body":"error","sonar/no-identical-conditions":"error","sonar/no-identical-expressions":"error","sonar/no-identical-functions":"error","sonar/no-ignored-exceptions":"error","sonar/no-ignored-return":"error","sonar/no-implicit-dependencies":"off","sonar/no-implicit-global":"error","sonar/no-in-misuse":"error","sonar/no-incomplete-assertions":"error","sonar/no-inconsistent-returns":"off","sonar/no-incorrect-string-concat":"error","sonar/no-internal-api-use":"error","sonar/no-intrusive-permissions":"error","sonar/no-invalid-regexp":"error","sonar/no-invariant-returns":"error","sonar/no-inverted-boolean-check":"error","sonar/no-ip-forward":"error","sonar/no-labels":"error","sonar/no-literal-call":"error","sonar/no-mime-sniff":"error","sonar/no-misleading-array-reverse":"error","sonar/no-misleading-character-class":"error","sonar/no-mixed-content":"error","sonar/no-nested-assignment":"error","sonar/no-nested-conditional":"error","sonar/no-nested-functions":"error","sonar/no-nested-incdec":"error","sonar/no-nested-switch":"error","sonar/no-nested-template-literals":"error","sonar/no-os-command-from-path":"error","sonar/no-parameter-reassignment":"error","sonar/no-primitive-wrappers":"error","sonar/no-redundant-assignments":"error","sonar/no-redundant-boolean":"error","sonar/no-redundant-jump":"error","sonar/no-redundant-optional":"error","sonar/no-reference-error":"off","sonar/no-referrer-policy":"error","sonar/no-regex-spaces":"error","sonar/no-require-or-define":"error","sonar/no-return-type-any":"error","sonar/no-same-argument-assert":"error","sonar/no-same-line-conditional":"error","sonar/no-selector-parameter":"error","sonar/no-skipped-tests":"error","sonar/no-small-switch":"error","sonar/no-sonar-comments":"error","sonar/no-table-as-layout":"error","sonar/no-try-promise":"error","sonar/no-undefined-argument":"error","sonar/no-undefined-assignment":"off","sonar/no-unenclosed-multiline-block":"error","sonar/no-uniq-key":"error","sonar/no-unsafe-unzip":"error","sonar/no-unthrown-error":"error","sonar/no-unused-collection":"error","sonar/no-unused-function-argument":"error","sonar/no-unused-vars":"error","sonar/no-use-of-empty-return-value":"error","sonar/no-useless-catch":"error","sonar/no-useless-increment":"error","sonar/no-useless-intersection":"error","sonar/no-useless-react-setstate":"error","sonar/no-variable-usage-before-declaration":"error","sonar/no-weak-cipher":"error","sonar/no-weak-keys":"error","sonar/no-wildcard-import":"error","sonar/non-existent-operator":"error","sonar/non-number-in-arithmetic-expression":"error","sonar/null-dereference":"error","sonar/object-alt-content":"error","sonar/operation-returning-nan":"error","sonar/os-command":"error","sonar/post-message":"error","sonar/prefer-default-last":"error","sonar/prefer-immediate-return":"error","sonar/prefer-object-literal":"error","sonar/prefer-promise-shorthand":"error","sonar/prefer-read-only-props":"error","sonar/prefer-regexp-exec":"error","sonar/prefer-single-boolean-return":"error","sonar/prefer-type-guard":"error","sonar/prefer-while":"error","sonar/production-debug":"error","sonar/pseudo-random":"error","sonar/public-static-readonly":"error","sonar/publicly-writable-directories":"error","sonar/reduce-initial-value":"error","sonar/redundant-type-aliases":"error","sonar/regex-complexity":"error","sonar/session-regeneration":"error","sonar/shorthand-property-grouping":"off","sonar/single-char-in-character-classes":"error","sonar/single-character-alternation":"error","sonar/slow-regex":"error","sonar/sql-queries":"error","sonar/stable-tests":"error","sonar/stateful-regex":"error","sonar/strict-transport-security":"error","sonar/strings-comparison":"error","sonar/super-invocation":"error","sonar/table-header":"error","sonar/table-header-reference":"error","sonar/test-check-exception":"error","sonar/todo-tag":"off","sonar/too-many-break-or-continue-in-loop":"error","sonar/unicode-aware-regex":"error","sonar/unused-import":"error","sonar/unused-named-groups":"error","sonar/unverified-certificate":"error","sonar/unverified-hostname":"error","sonar/updated-const-var":"error","sonar/updated-loop-counter":"error","sonar/use-type-alias":"error","sonar/values-not-convertible-to-numbers":"error","sonar/variable-name":"error","sonar/void-use":"error","sonar/weak-ssl":"error","sonar/x-powered-by":"error","sonar/xml-parser-xxe":"error","perfectionist/sort-array-includes":"error","perfectionist/sort-classes":"error","perfectionist/sort-decorators":"error","perfectionist/sort-enums":"error","perfectionist/sort-exports":"error","perfectionist/sort-heritage-clauses":"error","perfectionist/sort-imports":"error","perfectionist/sort-interfaces":"error","perfectionist/sort-intersection-types":"error","perfectionist/sort-jsx-props":["error",{groups:["shorthand","multiline"]}],"perfectionist/sort-maps":"error","perfectionist/sort-modules":"error","perfectionist/sort-named-exports":"error","perfectionist/sort-named-imports":"error","perfectionist/sort-object-types":"error","perfectionist/sort-objects":["error",{partitionByComment:!0}],"perfectionist/sort-sets":"error","perfectionist/sort-switch-case":["error",{order:"asc",type:"alphabetical"}],"perfectionist/sort-union-types":"error","perfectionist/sort-variable-declarations":["error",{order:"asc",type:"alphabetical"}],"@tanstack/query/exhaustive-deps":"error","@tanstack/query/infinite-query-property-order":"error","@tanstack/query/mutation-property-order":"error","@tanstack/query/no-rest-destructuring":"error","@tanstack/query/no-unstable-deps":"error","@tanstack/query/no-void-query-fn":"error","@tanstack/query/stable-query-client":"error","@tanstack/router/create-route-property-order":"error","a11y/alt-text":"error","a11y/anchor-ambiguous-text":"error","a11y/anchor-has-content":"error","a11y/anchor-is-valid":"error","a11y/aria-activedescendant-has-tabindex":"error","a11y/aria-props":"error","a11y/aria-proptypes":"error","a11y/aria-role":"error","a11y/aria-unsupported-elements":"error","a11y/autocomplete-valid":"error","a11y/click-events-have-key-events":"error","a11y/control-has-associated-label":"off","a11y/heading-has-content":"error","a11y/html-has-lang":"error","a11y/iframe-has-title":"error","a11y/img-redundant-alt":"error","a11y/interactive-supports-focus":"error","a11y/label-has-associated-control":"error","a11y/lang":"error","a11y/media-has-caption":"off","a11y/mouse-events-have-key-events":"error","a11y/no-access-key":"error","a11y/no-aria-hidden-on-focusable":"error","a11y/no-autofocus":"error","a11y/no-distracting-elements":"error","a11y/no-interactive-element-to-noninteractive-role":"error","a11y/no-noninteractive-element-interactions":"error","a11y/no-noninteractive-element-to-interactive-role":"error","a11y/no-noninteractive-tabindex":"error","a11y/no-redundant-roles":"error","a11y/no-static-element-interactions":"error","a11y/prefer-tag-over-role":"error","a11y/role-has-required-aria-props":"error","a11y/role-supports-aria-props":"error","a11y/scope":"error","a11y/tabindex-no-positive":"error","cspell/spellchecker":["error",{cspell:{words:["tauri","Applynetic","julianday","typicode","toolbelt","taze","ethang","TSESTree","Boop","cldr","astro","laravel","qwik","sitecore","uswds","mediat","Packt","Academind","Udemy","Colte","Bootcamp","HTMX","MERN","Nuxt","Credly","Sterett","Beyonder","hotspot","lqip","Hawn","nextui","speculationrules","zustand","vinxi","datasource","turso","supabase","solidjs","labelledby","svix","blockqoute","cortexjs","mathrm","nums","lifecycles","krausest","Signalis","Plass","Iteree","Sonner","cmdk","ngsw","dexie","leetcode","ngsrc","sindresorhus","rogan","heroui","millis","duckdb","pthread","remeda","radash","noto","nosniff","SAMEORIGIN","starcoder","logprobs","sealioning","swebok","pluralsight","skillset","junie"]}}]}},{files:["**/*.md"],plugins:{markdown:u},rules:{"markdown/fenced-code-language":"error","markdown/heading-increment":"error","markdown/no-bare-urls":"error","markdown/no-duplicate-definitions":"error","markdown/no-duplicate-headings":"error","markdown/no-empty-definitions":"error","markdown/no-empty-images":"error","markdown/no-empty-links":"error","markdown/no-html":"error","markdown/no-invalid-label-refs":"error","markdown/no-missing-atx-heading-space":"error","markdown/no-missing-label-refs":"error","markdown/no-missing-link-fragments":"error","markdown/no-multiple-h1":"error","markdown/no-reference-like-urls":"error","markdown/no-reversed-media-syntax":"error","markdown/no-space-in-emphasis":"error","markdown/no-unused-definitions":"error","markdown/require-alt-text":"error","markdown/table-column-count":"error"}},{files:["**/*.css"],language:"css/css",plugins:{css:i},rules:{"css/font-family-fallbacks":"error","css/no-duplicate-imports":"error","css/no-duplicate-keyframe-selectors":"error","css/no-empty-blocks":"error","css/no-important":"error","css/no-invalid-at-rule-placement":"error","css/no-invalid-at-rules":"off","css/no-invalid-named-grid-areas":"error","css/no-invalid-properties":"error","css/no-unmatchable-selectors":"error","css/prefer-logical-properties":"error","css/relative-font-units":"error","css/selector-complexity":"error","css/use-baseline":["error",{available:"newly"}],"css/use-layers":"error"}},{files:["**/*.json"],language:"json/json",plugins:{json:r},rules:{"json/no-duplicate-keys":"error","json/no-empty-keys":"error","json/no-unnormalized-keys":"error","json/no-unsafe-values":"error","json/sort-keys":"error","json/top-level-interop":"error"}},{files:["**/*.jsonc"],language:"json/jsonc",plugins:{json:r},rules:{"json/no-duplicate-keys":"error","json/no-empty-keys":"error","json/no-unnormalized-keys":"error","json/no-unsafe-values":"error","json/sort-keys":"error","json/top-level-interop":"error"}},{files:["**/*.json5"],language:"json/json5",plugins:{json:r},rules:{"json/no-duplicate-keys":"error","json/no-empty-keys":"error","json/no-unnormalized-keys":"error","json/no-unsafe-values":"error","json/sort-keys":"error","json/top-level-interop":"error"}},c,p);export{_ as default};
|
|
2
|
-
|
|
1
|
+
import config from "./src/eslint.config.js";
|
|
2
|
+
import { defineConfig } from "eslint/config";
|
|
3
|
+
|
|
4
|
+
export default defineConfig(
|
|
5
|
+
{
|
|
6
|
+
ignores: [
|
|
7
|
+
"dist",
|
|
8
|
+
"src/README.md",
|
|
9
|
+
"src/eslint.config.js",
|
|
10
|
+
"src/config.solid.js",
|
|
11
|
+
"src/config.react.js",
|
|
12
|
+
"src/config.astro.js",
|
|
13
|
+
"src/config.angular.js",
|
|
14
|
+
"src/config.storybook.js",
|
|
15
|
+
"src/config.tailwind.js",
|
|
16
|
+
"**/*.d.ts",
|
|
17
|
+
],
|
|
18
|
+
},
|
|
19
|
+
...config,
|
|
20
|
+
{
|
|
21
|
+
languageOptions: {
|
|
22
|
+
parserOptions: {
|
|
23
|
+
project: true,
|
|
24
|
+
tsconfigRootDir: import.meta.dirname,
|
|
25
|
+
},
|
|
26
|
+
},
|
|
27
|
+
},
|
|
28
|
+
);
|
package/package.json
CHANGED
|
@@ -59,7 +59,7 @@
|
|
|
59
59
|
"url": "git+https://github.com/eglove/ethang-monorepo.git#master"
|
|
60
60
|
},
|
|
61
61
|
"type": "module",
|
|
62
|
-
"version": "24.0.
|
|
62
|
+
"version": "24.0.2",
|
|
63
63
|
"scripts": {
|
|
64
64
|
"build": "bun build.ts && pnpm lint",
|
|
65
65
|
"lint": "eslint . --fix --concurrency=auto && prettier src --write"
|
package/src/README.md
ADDED
|
@@ -0,0 +1,132 @@
|
|
|
1
|
+
# Relentless. Unapologetic.
|
|
2
|
+
|
|
3
|
+
[View Config](https://eslint-config-ethang.pages.dev/rules)
|
|
4
|
+
|
|
5
|
+
> [!CAUTION]
|
|
6
|
+
> Prettier is already included for styling!
|
|
7
|
+
|
|
8
|
+
- 759 errored rules.
|
|
9
|
+
- 237 rules from [eslint-plugin-sonarjs](https://github.com/SonarSource/SonarJS/blob/master/packages/jsts/src/rules/README.md)
|
|
10
|
+
- 144 rules from [@eslint/js](https://github.com/eslint/eslint/tree/main/packages/js)
|
|
11
|
+
- 134 rules from [sindresorhus/eslint-plugin-unicorn](https://github.com/sindresorhus/eslint-plugin-unicorn)
|
|
12
|
+
- 108 rules from [@typescript/eslint](https://github.com/typescript-eslint/typescript-eslint)
|
|
13
|
+
- 34 rules from [jsx-a11y](https://github.com/jsx-eslint/eslint-plugin-jsx-a11y)
|
|
14
|
+
- 32 rules from [eslint-plugin-lodash](https://github.com/wix-incubator/eslint-plugin-lodash)
|
|
15
|
+
- 20 rules from [eslint-plugin-perfectionist](https://github.com/azat-io/eslint-plugin-perfectionist)
|
|
16
|
+
- 20 rules from [@eslint/markdown](https://github.com/eslint/markdown)
|
|
17
|
+
- 14 rules from [@eslint/css](https://github.com/eslint/css)
|
|
18
|
+
- 7 rules from [@tanstack/eslint-plugin-query](https://tanstack.com/query/latest/docs/eslint/eslint-plugin-query)
|
|
19
|
+
- 6 rules from [@eslint/json](https://github.com/eslint/json)
|
|
20
|
+
- 1 rule from [eslint-plugin-compat](https://github.com/amilajack/eslint-plugin-compat)
|
|
21
|
+
- 1 rule from [@tanstack/eslint-plugin-router](https://tanstack.com/router/latest/docs/eslint/eslint-plugin-router)
|
|
22
|
+
- 1 rule from [@cspell/eslint-plugin](https://github.com/streetsidesoftware/cspell/tree/main/packages/cspell-eslint-plugin)
|
|
23
|
+
|
|
24
|
+
# Add Even More!
|
|
25
|
+
|
|
26
|
+
- 80 rules for **Angular**
|
|
27
|
+
- `import angularConfig from "@ethang/eslint-config/config.angular.js";`
|
|
28
|
+
- 46 rules from [@angular-eslint/eslint-plugin](https://github.com/angular-eslint/angular-eslint/blob/main/packages/eslint-plugin/README.md)
|
|
29
|
+
- 34 rules from [@angular-eslint/eslint-plugin-template](https://github.com/angular-eslint/angular-eslint/blob/main/packages/eslint-plugin-template/README.md)
|
|
30
|
+
- 53 rules for **Astro**
|
|
31
|
+
- `import astroConfig from "@ethang/eslint-config/config.astro.js";`
|
|
32
|
+
- 53 rules from [eslint-plugin-astro](https://github.com/ota-meshi/eslint-plugin-astro)
|
|
33
|
+
- 51 rules for **HTML**
|
|
34
|
+
- import html from "@ethang/eslint-config/config.html.js";
|
|
35
|
+
- 51 rules from [@html-eslint/eslint-plugin](https://github.com/html-eslint/html-eslint)
|
|
36
|
+
- 91 rules for **React**
|
|
37
|
+
- `import reactConfig from "@ethang/eslint-config/config.react.js";`
|
|
38
|
+
- 62 rules from [@eslint-react/eslint-plugin](https://eslint-react.xyz/)
|
|
39
|
+
- 29 rules from [eslint-plugin-react-hooks](https://github.com/facebook/react/tree/main/packages/eslint-plugin-react-hooks)
|
|
40
|
+
- 18 rules for **Solid**
|
|
41
|
+
- `import solidConfig from "@ethang/eslint-config/config.solid.js";`
|
|
42
|
+
- 18 rules from [eslint-plugin-solid](https://github.com/solidjs-community/eslint-plugin-solid)
|
|
43
|
+
- 16 rules for **Storybook**
|
|
44
|
+
- `import storybookConfig from "@ethang/eslint-config/config.storybook.js";`
|
|
45
|
+
- 16 rules from [eslint-plugin-storybook](https://github.com/storybookjs/eslint-plugin-storybook)
|
|
46
|
+
- 6 rules for **Tailwind**
|
|
47
|
+
- import tailwindConfig from "@ethang/eslint-config/config.tailwind.js";
|
|
48
|
+
- 6 rules from [eslint-plugin-tailwindcss](https://github.com/francoismassart/eslint-plugin-tailwindcss)
|
|
49
|
+
|
|
50
|
+
# Install
|
|
51
|
+
|
|
52
|
+
```powershell
|
|
53
|
+
pnpm i -D eslint @ethang/eslint-config
|
|
54
|
+
```
|
|
55
|
+
|
|
56
|
+
**Requires TypesScript and tsconfig.json at root directory.**
|
|
57
|
+
|
|
58
|
+
# Config
|
|
59
|
+
|
|
60
|
+
In **eslint.config.ts**
|
|
61
|
+
|
|
62
|
+
```js
|
|
63
|
+
import config from "@ethang/eslint-config/eslint.config.js";
|
|
64
|
+
import { defineConfig } from "eslint/config";
|
|
65
|
+
import path from "node:path";
|
|
66
|
+
import reactConfig from "@ethang/eslint-config/config.react.js"; // OPTIONAL
|
|
67
|
+
import tailwindConfig from "@ethang/eslint-config/config.tailwind.js"; // OPTIONAL
|
|
68
|
+
import htmlConfig from "@ethang/eslint-config/config.html.js"; // OPTIONAL
|
|
69
|
+
|
|
70
|
+
export default defineConfig(
|
|
71
|
+
{
|
|
72
|
+
ignores: [], // Ignored files apply to all following configs
|
|
73
|
+
},
|
|
74
|
+
...config,
|
|
75
|
+
...reactConfig,
|
|
76
|
+
...htmlConfig,
|
|
77
|
+
...tailwindConfig(path.join(import.meta.dirname, "src", "index.css")),
|
|
78
|
+
{
|
|
79
|
+
languageOptions: {
|
|
80
|
+
parserOptions: {
|
|
81
|
+
project: true,
|
|
82
|
+
tsconfigRootDir: import.meta.dirname,
|
|
83
|
+
},
|
|
84
|
+
},
|
|
85
|
+
rules: {
|
|
86
|
+
// Override rules from above configs
|
|
87
|
+
},
|
|
88
|
+
},
|
|
89
|
+
);
|
|
90
|
+
```
|
|
91
|
+
|
|
92
|
+
**Scripts**
|
|
93
|
+
|
|
94
|
+
```json
|
|
95
|
+
"scripts": {
|
|
96
|
+
"lint": "eslint . --fix --concurrency=auto"
|
|
97
|
+
}
|
|
98
|
+
```
|
|
99
|
+
|
|
100
|
+
**Browserslist**
|
|
101
|
+
|
|
102
|
+
This config will also lint for browserslist features. [More info.](https://github.com/browserslist/browserslist)
|
|
103
|
+
|
|
104
|
+
It's recommended to use [browserslist-config-baseline](https://github.com/web-platform-dx/browserslist-config-baseline)
|
|
105
|
+
|
|
106
|
+
```powershell
|
|
107
|
+
pnpm i -D browserslist-config-baseline
|
|
108
|
+
```
|
|
109
|
+
|
|
110
|
+
```json
|
|
111
|
+
"browserslist": [
|
|
112
|
+
"extends browserslist-config-baseline",
|
|
113
|
+
"current node"
|
|
114
|
+
],
|
|
115
|
+
```
|
|
116
|
+
|
|
117
|
+
Or a simpler config without an additional dependency.
|
|
118
|
+
|
|
119
|
+
```json
|
|
120
|
+
"browserslist": [
|
|
121
|
+
"defaults and fully supports es6-module",
|
|
122
|
+
"current node"
|
|
123
|
+
],
|
|
124
|
+
```
|
|
125
|
+
|
|
126
|
+
**Engines**
|
|
127
|
+
|
|
128
|
+
```json
|
|
129
|
+
"engines": {
|
|
130
|
+
"node": ">=24"
|
|
131
|
+
},
|
|
132
|
+
```
|